什么是二维数组?那和一维数组的区别是什么呢?
- 二维数组在概念上是二维的:其下标在两个方向上变化,对其访问一般需要两个下标。
- 在内存中并不存在二维数组,二维数组实际的硬件存储器是连续编址的,也就是说内存中只有一维数组,即放完一行之后顺次放入第二行,和一维数组存放方式是一样的。
定义方式:
一维数组:一行元素, 定义方式int arr[ ]={ 11,22 };
二维数组:一行一列个元素 定义方式int arr[1][1]={ 11,22 };
//二维数组的定义方式-具体如下:
int arr[]={11,22}; //一行
int arr[][2]={11,22}; //一行2列
//二维数组中第一个[]代表行数的个数,可以像一维数组一样省略
//第二个[]代表列数个数,是不可缺的,
int arr[1][]={1,2,3};//这个定义方法是错误的
int arr[1][3]={1,2,3};//正确
int arr[][2]={1,2};//正确
二维数组的初始化
#include<stdio.h>
#include<stdlib.h>
int main(){
//分段赋值:
int arr1[3][4]= //3代表了行数对吧!4代表了每一行的列数。
{ //那么这样很好理解,前表行后表行列。
{4,6,8,10},
{1,0,3,2},
{12,14,16,18}
};
//连续赋值
int arr2[3][4]={4,6,8,10,1,0,3,2,12,14,16,18};
//可以只给部分元素赋初值,未初始化则为0
int arr3[3][4]={4,6,8,10};
//所有的成员都设置为0
int arr3[3][4]={0};
};
//[]中不定义元素个数,定义时必须初始化
int arr4[][4]={4,6,8,10,1,0,3,2,12,14,16,18};
system("pause");
return 0;
}