数组的奥秘——二维数组

上篇我们聊到一维数组,这里我们继续来谈二维数组

对于 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;

}

结果如下:

image

从结果可以看出:

a+1 对于 a 来说增加了8个字节,也就是2个 int 型数据,这个和 &a[0] 是一样的。

&a+1 对于 &a 来说增加了18h,也就是十进制24,刚好这个数组的大小。所以我们可以这样理解这些量:

image

用文字来描述:

a:代表数组的第一个元素的地址,和&a[0] 是一个概念,而对于二维数组来说,第一个元素就是一行(一个一维数组)

&a : 代表数组的地址

理解了这些概念,对于更高维度的数组一样用这样的规则来理解;二维数组相当于由多个一维数组组成,依次类推

posted @ 2013-12-05 23:09  fclz  阅读(177)  评论(0编辑  收藏  举报