代码:
int k[5][3];
for (int i = 0; i < 5; i++)
for (int j = 0; j < 3; j++)
{
k[i][j] = j + i * 10;
}
cout << k << " " << (k[0]) << " " << k[0][0] << endl;
cout << typeid(k).name() << " " << typeid(k[0]).name() << " " << typeid(k[0][0]).name() << endl;
cout << sizeof(k) << " " << sizeof(k[0]) << " " << sizeof(k[0][0]) << endl;
cout << *k << " " << *k[0] << " " << k[0][0] << endl;
cout << typeid(*k).name() << " " << typeid(*k[0]).name() << " " << typeid(k[0][0]).name() << endl;
cout << sizeof(*k) << " " << sizeof(*k[0]) << " " << sizeof(k[0][0]) << endl;
结果:
0039F760 0039F760 0
int [5][3] int [3] int
60 12 4
0039F760 0 0
int [3] int int
12 4 4
总结:
数组名k代表整个二维数组,类型为int[5][3],内存大小为60;
数组名取地址*k,与k[0]完全一样,都是指向一维数组的指针,类型为int [3],内存为指针大小,4;
**k,*k[0],k[0][0]表达相同的对象,均为数组的第一个元素,类型为int型,内存为int型大小,4.