数组的地址的地址
执行如下代码后输出结果为( )
int main()
{
int a[5] = {1, 2, 3, 4, 5};
int *ptr = (int*)(&a + 1);
printf("%d, %d", *(a + 1), *(ptr - 1));
return;
}
A 1,1
B 1,3
C 3,3
D 2,5
答案: D
解析:数组a本身就表示数组的首元素的地址,因而&a表示数组的地址的地址,因而&a+1表示的地址为数组a的首字母地址+数组a的大小。而(int *)(&a+1)即把其强制转换为int *类型,因而相当于ptr = &a+1。从而*(ptr-1)即数组a最后一个元素,因而输出是2,5。

浙公网安备 33010602011771号