请说明以下 代码 输出什么,并解释清楚
- #include <iostream>
- using namespace std;
- int main()
- {
- int a[5]={1,2,3,4,5};
- int *ptr=(int *)(&a+1);
- printf("%d,%d",*(a+1),*(ptr-1));
- return 0;
- }
最佳答案 | 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]; |