#include <stdio.h>
int main(void)
{
int a[]= {15, 14, 34, 46, 69, 86, 10, 0, 4};
int *p = a; // p point to the first element of array a[0]
printf("%x\n%x\n",&p+1, &a[0]);
return 0;
}
该代码将作为示例打印
bff0e554
bff0e554
所以 &p+1 返回数组第一个元素的地址。 据我了解,&p 返回该指针的地址,&p+1 应该打印指针的地址 + 1 请告诉我我错过了什么!!
最佳答案
&p
获取 p
的地址,而不是 p
的值。这对你来说 &p + 1 == a
纯属巧合,取决于你的堆栈对齐方式。您的编译器可能已将这两个变量按其他顺序排序或在两者之间留出空隙。
关于c - 为什么 &p+1 给出与 p 相同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34206137/