📜  C |数组|问题4

📅  最后修改于: 2021-05-29 13:14:35             🧑  作者: Mango

以下程序的输出?

#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基础课程》。