Я пытаюсь выучить C, и я немного зациклен на указателях на указатели.Я думаю, что понимаю, зачем они вам нужны, но не могу полностью понять, что происходит.
Например, следующий код не работает так, как я ожидал:
#include <stdio.h>
int newp(char **p) {
char d = 'b';
*p = &d;
/*printf("**p = %c\n", **p);*/
return 1;
}
int main() {
char c = 'a';
char *p = &c;
int result;
result = newp(&p);
printf("result = %d\n", result);
printf("*p = %c\n", *p);
printf("c = %c\n", c);
return 0;
}
Результат, который я получаю, таков:
result = 1
*p =
c = a
* p печатает как ничего.Вместо этого я ожидал бы *p = b
.
Однако , если я раскомментирую строку 6 (printf
в функции newp
), то получу следующее:
**p = b
result = 1
*p = b
c = a
Чего мне не хватает?