一个数组引用的指针问题
#include <iostream>
using namespace std;
int main(void){
int a[5] = {1,2,3,4,5};
int* ptr = (int*)(&a+1);
cout<<"ptr = "<<*(ptr-1)<<"*(a + 1) = "<<*(a+1)<<endl;//这里是5,2
int* ptr1=(int*)(&a);
cout<<"ptr = "<<*(ptr1)<<"*(a + 1) = "<<*(a+1)<<endl;//这里是1,2
return 0;
}
上面的两个引用该怎么理解呢,数组的引用的指针不是首地址吗?
[解决办法]
数组名 取地址 拿到的是数组的地址 = 数组首个元素的地址
但是因为他的类型是a[5]的地址,所以&a + 1后, 指向的是下一个 a[5]的开始地址
可以想象二维数组的原理。
[解决办法]
而int* ptr1=(int*)(&a);之后他的指针类型 就是int,
因此他指向下一个int,也就是下一个元素