int main
{int a[5]= {1, 2, 3, 4, 5 };
int ptr=(int)(&a+1);
printf("%d,%d",(a+1),(ptr-1));
system("pause");
return0:
写出打印结果
答案为啥是2 5,我算的结果是2 1
用代码块格式化一下吧,*号全没了
int * ptr=(int * )(&a+1);
这行代码不是让ptr指向数组元素2的地址,而是指向a数组之后的一个整型空间地址。&a+1,这里的1表示的是一个a数组长度。
所以输出 *(ptr-1),ptr-1的1表示一个int类型长度,所以指向a数组最后一个元素的地址,所以输出为5