【发布时间】:2014-07-29 05:35:30
【问题描述】:
我得到以下代码的输出 -> 6
我对输出感到困惑,所以我更改了一小部分代码并检查了它。
我用 int * ptr=(int*)(a+1) 替换了 Not clear 语句,我得到的输出为 --> 1。怎么样?
听说&a、a、a[0]都是同一个地址?是什么让它与众不同?
#include<stdio.h>
int main()
{
int a[] = {1, 2, 3, 4, 5, 6};
int *ptr = (int*)(&a+1); //NOT CLEAR
printf("%d ", *(ptr-1) );
getchar();
return 0;
}
【问题讨论】:
-
see here 很好的解释
-
a是int[6]类型的数组,因此&a是int (*)[6]类型的指向数组的指针,&a[0]是指向@ 的第一个元素的指针987654335@,所以是int *。