之前应该也写过类似的博客,今天又碰到类似的题目,又做错了,看来当时就没有透彻明白。
int a[10] = {0}; int (*b)[10] = &a; int** c = reinterpret_cast<int**>(&a); std::cout << a << std::endl<<&a<<endl<<&a[0]<<endl; std::cout << c << std::endl; std::cout << b << std::endl; std::cout << **b << std::endl;
output:
0024FEC8
0024FEC8
0024FEC8
0024FEC8
0024FEC8
0
为什么a的值和&a的值是一样的呢?
首先a表示数组第一个元素的地址,也就是这个数组的起始地址。
a是一个数组,&a表示这个数组的地址,也就是数组的起始地址。
虽然a和&a的值一样的,但是表示的意义不一样,a+1表示这个数组第二个元素的地址,而&a+1表示下个数组的地址