以下程序的输出?
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