以下程序的输出?
#include
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。
这个问题的测验
想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。