数组指针和数组名的&
数组名是数组第一个数据的地址,是一个指针常量,但在sizeof和&的情况下不同
sizeof返回整个数组的长度,而不是指向数组的指针的长度。取一个数组名的地址所产生的是一个指向数组的指针,
而不是一个指向某个指针常量的指针。&a后返回的指针便是指向数组的指针,跟a在指针的类型上不同
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);//&a是指向数组的指针 +1实际上加了5个int的长度 到了a[5] 强制转换为int*指针 减一后减了一个int长度到达a[4] 7 cout << *(ptr-1) << "\t" << *(ptr-2) << endl; // 5 4 8 9 int *p = (int *)(a+1); //2 10 cout << *p << endl; 11 }