相关疑难解决方法(0)

为什么指向指针的指针与指向数组的指针不兼容?

好吧,我无法理解指针与指向数组指针的指针.请考虑以下代码:

char s[] = "Hello, World";
char (*p1)[] = &s;
char **p2 = &s;
printf("%c\n", **p1); /* Works */
printf("%c\n", **p2); /* Segmentation fault */
Run Code Online (Sandbox Code Playgroud)

为什么第一个printf工作,而第二个不工作?

据我所知,'s'是指向数组第一个元素的指针(即'H').因此将p2声明为char**意味着它是指向char的指针.使它指向's'应该是合法的,因为's'是指向char的指针.因此解除引用它(即**p2)应该给出'H'.但事实并非如此!

c arrays pointers

12
推荐指数
1
解决办法
564
查看次数

标签 统计

arrays ×1

c ×1

pointers ×1