首页 > 编程资源分享区 > C/C++测试题 > 一道C++指针测试题(不一定做得对哦)
2006
04-17

一道C++指针测试题(不一定做得对哦)

Consider the data type
·   char is 1 byte
·   int is 2 byte
·   long int 4 byte
·   float is 4 byet
·   double is 8 byte
·   long double is 10 byte
·   pointer is 2 byte
1. Consider the following program:
main()
{
  int  a[5] = {1,2,3,4,5};
  int *ptr =  (int*)(&a+1);

  printf(“%d %d” , *(a+1), *(ptr-1) );

}
The output for this program is:

(a) 2 2
(b) 2 1
(c) 2 5
(d) None of the above

选择?


一道C++指针测试题(不一定做得对哦)》有 11 条评论

  1. ningweidong 说:

    int *ptr =  (int*)(&a+1);
    指针ptr并不是指向数组中的第二个元素。a+1是指向数组中的第二个元素,但是&a+1就不是了。a是数组第0个元素的地址,而&a是指针的地址。&a不仅记录着数组的首地址,而且还记录了数组的长度,&a+1就是跳过这个数组,也就是指向了数组过后的第一个字节。所以,ptr-1就退到数组的最后一个元素,*(ptr-1)输出的结果就是数组的最后一个元素5。

  2. wtyw 说:

    好,又学到了新东西,谢谢啦!

  3. hiroki 说:

    应该差不多吧

  4. hiroki 说:

    来支持一下啊

  5. 猪zaiZai 说:

    ningweidong
    正解.

  6. ll2323001 说:

    谢谢了,学到东西了

  7. debuging 说:

    好像c,不很确定

  8. sasaring 说:

    学C那会,老师说指针太难,咱不学了,回头考试出简单点的。结果学C++的时候,老师来了句,学C的时候你们学过指针了吧,那我这里就不讲了啊。

    班里同学集体吐血啊。

留下一个回复