#include <stdio.h> void main () { int a[5]={1,2,3,4,5}; int *ptr=(int *)(&

2024年12月05日 13:29
有3个网友回答
网友(1):

这题的关键在int *ptr=(int *)(&a+1);这一句上,&a表示取得数组a存储区域的首地址,再加1表示数组a存储区域的后的地址,这就使得ptr指针指向数组的最后一个元素后面的那个存储单元的地址,而ptr减1后,再进行数据访问,则访问的是ptr指针的前一个存储单元的值,所有最后的答案是2,5

网友(2):

输出2,1
*(a+1)是指取数组a首地址加一的地址上的内容;
*ptr指向&a+1,所以值为2;
*(ptr-1)是指向数组a的首地址

楼上说的对,惭愧

网友(3):

&a是a[0]的地址,所以&a+1是a[1]的地址
ptr是指针,其初值为a[1],
*(a+1)的值为a[1],
故*(ptr-1)为a[0]