【发布时间】:2021-10-05 02:58:27
【问题描述】:
例子:
int a[99];
int (*p)[99] = &a;
// this prints 1
printf("%d\n", (void *) p == (void *) *p);
一般来说,如果p 是一个指向数组的指针,那么p 和*p 的对象表示(即位模式)都是相等的。
我只是迷路了,完全不确定这种行为的可移植性。
所以,我很好奇标准是否保证了这种行为。如果是这样,有人可以引用所有保证它的相关段落吗?
【问题讨论】:
-
p指向整个数组,而*p指向数组的第一个元素。但是这些恰好共享相同的地址。同样,指向结构的指针和指向结构第一个成员的指针也将共享相同的地址。
标签: arrays c pointers language-lawyer standards