定义一个数组 a[2] = {1,2}; 其在内存中是按照连续的2个地址进行存放。例
0x100 -> a[0] = 1
0x104 -> a[1] = 2
取a[0]的地址有两种,一种是&a[0], 另一种是用数组名a代替。那边&a代表什么含义呢,对于int a = 2这种情况,&a代表的是变量a的内存地址。如果a是数组呢,由于名字本身已经代表了数组在内存中的首地址,所以占在编译器的角度考虑 &a也只能代表数组在内存中的首地址即和a是同样的值。
#include <iostream>
using namespace std;
int main()
{
int a[2] = {1,2};
cout << a << " " << &a << endl;
}
上述程序的运行结果为
0x7ffeefd9d908 0x7ffeefd9d908
如果a是一个二维数组,二维数组的初始化
int matrixA[2][3] = { {1,2,3},{4,5,6}}; 上面初始化的是一个2行3列的二维数组
其在内存中的分布为:
0x7ffcbafe6150 1 0x7ffcbafe6154 2 0x7ffcbafe6158