C |数组|问题4

以下程序的输出?

null

#include<stdio.h>
int main()
{
int a[] = {1, 2, 3, 4, 5, 6};
int *ptr = ( int *)(&a+1);
printf ( "%d " , *(ptr-1) );
return 0;
}


(A) 1. (B) 2. (C) 6. (D) 运行时错误 答复: (C) 说明: &a是整个数组的地址a[]。如果我们在&a中加1,就会得到“a[]+sizeof(a)的基址”。这个值被类型转换为int*。因此,ptr在存储6之后指向内存。将ptr打印为“int*”,并打印*(ptr-1)的值。因为ptr在6之后指向内存,所以ptr–1指向6。 这个问题的小测验

© 版权声明
THE END
喜欢就支持一下吧
点赞11 分享