【发布时间】:2018-05-22 08:56:48
【问题描述】:
看下面给出的代码:
#include<stdio.h>
int main()
{
int (*p)[3];
int a[3]={10,11,12};
p=&a;
printf("%d\n", *p[0]);
printf("%d\n", *p[1]);
printf("%d\n", *p[2]);
return 0;
}
printf("%d\n", *p[0]);打印 10 这是预期的。
但是 printf("%d\n", *p[1]);不打印 11。
并且 printf("%d\n", *p[2]);不打印 12。
为什么?这背后的原因是什么?
【问题讨论】:
-
*p[k]是*(p[k]),而不是(*p)[k]。 -
您知道
p是一个由三个指针组成的数组,其中一个指向a[0],另一个指向未知内存? -
使用简单的指针 (int *p;) 并递增指针以显示数组的其他值。
-
没有。我认为 p 是一个由三个指针组成的数组,其中一个指向 a[0],一个指向 a[1],一个指向 a[2]。我可能弄错了。但是为什么除了 p[0] 之外的其他指针都指向未知内存呢? @Kami Kaze