C++二维数组

来源:互联网 发布:乔布斯是编程天才吗 编辑:程序博客网 时间:2024/06/05 17:23

如果数组的元素又是数组,则称为二维数组。例如

int a[3][4] = {{0, 1, 2, 3}, {4, 5, 6, 7}, {8, 9 ,10 ,11}};
可以将a看成一个数组,这个数组中有3个元素,每个元素又是一个包含4int的数组。

1 二维数组的标识符

当给出二维数组名而没有方括号时,可以将其看作是二维数组的标识符。该标识符不是左值,不能给它赋值,可以将其看作是数组的起始地址,即数组中第一个元素的地址。

2 a[x]的含义

x是非负整数。在之前提到,二维数组可以看成是数组的数组,所以a[0]表示二维数组中的第一个元素,a[1]表示二维数组中的第二个元素,而二维数组中的元素类型还是素组,所以a[0]表示数组{0, 1, 2, 3}的地址,a[1]表示数组{4, 5, 6, 7}的地址。

int a1 = *(a[0]+1);int a2 = *(a[1]+2);
此时,a1的值是1a2的值是6,如图1所示。

 


1 a[x]的含义

3 a+x的含义

x是非负整数。a是指向其第一个元素,则a+1指向其第二个元素,a+2指向其第三个元素,如图2所示。


2 a+x的含义

对于二维数组aaa[0]的值都是表示数组a的第一个元素的地址。而aa+1a+2的类型都是二维数组,所以a+1(a+1)[0]的值都是表示a+1的第一个元素的值。

int b1 = *(a+1)[0];int b2 = *(a+1)[1];
此时b1的值是4b2的值是8

4 (a+x)[y]的含义

xy都是整数,在“3 a+x的含义”中提到,a+x的含义是指向二维数组的第x-1个元素,而a+x的类型仍然是二维数组,所以(a+x)[y]的表示二维数组中第y-1个元素。

int b3 = *((a+1)[0]+1);
b3的值是5,如图3所示。

 

 

 

3 (a+x)[y]的含义

4 定义指向数组的指针

定义数组的指针与定义数组类似,首先声明元素类型,之后是变量名字和维数。因为定义的类型是指针,所以需要在标识符前加上*

int (*ip)[4] = &a[2];
需要注意的是,方括号[]的优先级别高于*,所以在定义数组的指针时,必须加上小括号来设置优先级。如果不加入小括号设置优先级

int *ip[4];
此时ip表示一个数组,该数组中包含4个元素,每个元素的类型是int*

原创粉丝点击