数组的奥秘——二维数组
上篇我们聊到一维数组,这里我们继续来谈二维数组
对于 int a[3][2] = { 1 , 2 , 3 , 4 , 5 ,6 };
a, &a 等各代表什么?
根据一维数组的特点,我们可以推断,a 代表数组首元素的地址,&a 代表数组的地址,具体是什么样的形式呢,我们通过具体的例子来验证:
#include<iostream> using namespace std; int main(){ int a[3][2] = { 1, 2, 3, 4, 5, 6 }; cout << "a =" << a << endl; cout << "a+1=" << a + 1 << endl; cout << endl; cout << "&a =" << &a << endl; cout << "&a+1=" << &a + 1 << endl; cout << endl; cout << "&a[0] =" << &a[0] << endl; cout << "&a[0]+1=" << &a[0] + 1 << endl; cout << endl; cout << "&a[0][0] =" << &a[0][0] << endl; cout << "&a[0][0]+1=" << &a[0][0] + 1 << endl; cout << endl; system("pause"); return 0; }
结果如下:
从结果可以看出:
a+1 对于 a 来说增加了8个字节,也就是2个 int 型数据,这个和 &a[0] 是一样的。
&a+1 对于 &a 来说增加了18h,也就是十进制24,刚好这个数组的大小。所以我们可以这样理解这些量:
用文字来描述:
a:代表数组的第一个元素的地址,和&a[0] 是一个概念,而对于二维数组来说,第一个元素就是一行(一个一维数组)
&a : 代表数组的地址
理解了这些概念,对于更高维度的数组一样用这样的规则来理解;二维数组相当于由多个一维数组组成,依次类推