指针问题

来源:互联网 发布:2016年癌症数据 编辑:程序博客网 时间:2024/05/01 13:02

请说明以下代码输出什么,并解释清楚
  1. #include <iostream>
  2. using namespace std;
  3. int main()
  4. {
  5.         int a[5]={1,2,3,4,5};
  6.         int *ptr=(int *)(&a+1);
  7.         printf("%d,%d",*(a+1),*(ptr-1));
  8.         return 0;
  9. }
复制代码

最佳答案leehui
我觉得应该把它看作是一个二围数组来理解,
&a+1 表示 数组a的行地址再加1 (一维数组行地址加1,即加1行) , 也即 &a+1=&a[5];
所以,int *ptr=(int *)(&a+1)   也即 int *ptr=&a[5];
因此:
*(ptr-1)  =  a[4] ;
*(a+1)   =   a[1];
原创粉丝点击