Задача в моей школе следующая:
Создайте функцию, которая будет принимать в качестве параметра ******str
указатель на указатель на указатель на указатель на указатель на указатель char
и устанавливает Follow the white rabbit!
на указатель символа.
void mx_deref_pointer(char ******str);
Я новичок в C и очень смущен, хотя я узнал все, что мог найти об указателях .. (
Я придумал следующий код:
#include <stdio.h>
#include <stddef.h>
void mx_deref_pointer(char ******str) {
char *pstr1, **pstr2, ***pstr3, ****pstr4, *****pstr5;
str = &pstr5;
pstr5 = &pstr4;
pstr4 = &pstr3;
pstr3 = &pstr2;
pstr2 = &pstr1;
pstr1 = "Follow the white rabbit!";
printf("%s", pstr1);
}
int main() {
char ******pstr6 = NULL;
mx_deref_pointer(pstr6);
}
Он выводит «Follow the white rabbit», но я не думаю, что это правильно, поскольку комментирование большинства функций все равно дает тот же результат. Кроме того, я не знаю, как передать что-либо кроме NULL в mx_deref_pointer (). Некоторые из парней, которые учатся у меня, придумали другой mx_deref_pointer:
void mx_deref_pointer(char ******str) {
str [0] [0] [0] [0] [0] [0] = "Follow the white rabbit!";
}
Кажется, это работает, однако никто из них не смог мне объяснить, как это работает. Я был бы чрезвычайно признателен, если бы кто-то смог предоставить для этого подходящий кусок кода и, что более важно, объяснить, что и как он делает!
Спасибо.