捐助郴维网
感谢您对郴维网的支持,你的支持将是郴维网持续发展的动力!
二维码
×
当前位置:郴维网 >知识点备忘 > 正文
15 2018.02

S1E20:二维数组

点击次数:1499 更新时间:2018/2/15 15:46:23  【打印此页

知识点回顾:


1. 二维数组的定义

定义二维数组的方法跟一位数组相似,使用方括号指定每个维度的元素个数:

类型 数组名[常量表达式][常量表达式]

int a[6][6]; // 6*6,6行6列
char b[4][5]; // 4*5,4行5列
double c[6][3]; // 6*3,6行3列


 

注意:这里需要强调的是几行几列我们是从概念模型上来看的,也就是说,这样来看待二维数组,我们可以更容易理解。但从物理模型上看,无论是二维数组还是更多维的数组,在内存中仍然是以线性的方式存储的。
 

int b[4][5];


 

从图中我们不难看出,二维数组事实上就是在一维数组的基础上,每个元素存放一个数组。同样道理,三维数组,四维数组都是以同样的方式实现。


2. 二维数组的访问

数组名[下标]

a[0][0]; // 访问a数组中第1行第1列的元素
b[1][3]; // 访问b数组中第2行第4列的元素
c[3][3]; // 访问c数组中第4行第4列的元素


跟访问一位数组相似,同样是使用下标访问数组中的元素。同样需要注意下标的取值范围,以防止数组的越界访问。

比如 int a[3][4],其“行下标”的取值范围是 0~2,“列下标”的取值范围是 0~3,超出任何一个下标的访问都会造成越界。


3. 二维数组的初始化

1. 由于二维数组在内存中是线性存放的,因此可以将所有的数据写在一个花括号内:

int a[3][4] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};

这样就是先将第1行4个元素初始化,再初始化第2行的元素。

2. 为了更直观地表示元素的分布,可以用大括号将每一行的元素括起来:

int a[3][4] = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}};


这样写的话表示会更加清晰:

int a[3][4] = {
        {1, 2, 3, 4},
        {5, 6, 7, 8},
        {9, 10, 11, 12}
};


3. 二维数组也可以仅对部分元素赋初值:

int a[3][4] = {{1}, {5}, {9}};


这样写是只对各行的第1列元素赋初值,其余元素初始化为0。

4. 如果希望整个二维数组初始化为0,那么直接在大括号里写一个0即可:

int a[3][4] = {0};


5. C99 同样增加了一种新特性:指定初始化的元素。这样就可以只对数组中的某些指定元素进行初始化赋值,而未被赋值的元素自动初始化为 0:

int a[3][4] = {[0][0] = 1, [1][1] = 2, [2][2] = 3};

6. 二维数组的初始化也能偷懒,让编译器根据元素的数量计算数组的长度。但只有第 1 维的元素个数可以不写,其他维度必须写上:

int a[][4] = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}};
提示
郴维网为您提供各类专业服务:
软件开发,电脑配件销售,WIFI路由器销售,上门电脑维修,上门安装系统,系统安装,软、硬件安装,电脑除尘清灰,显示器维修,WIFI安装调试,服务器维护,数据恢复,密码破解,网络布线,网络检修,打印机维修,打印机加碳粉,苹果电脑安装系统,苹果电脑安装双系统,监控安装维护,电脑外包,笔记本电脑维修,餐饮、美容行业软件安装 等。。。。。。
点击次数:1499 更新时间:2018/2/15 15:46:23  【打印此页
关键词推荐:郴州电脑城 郴州电脑维修公司 维修电脑公司 郴州软件开发 上门电脑维修 上门安装系统 笔记本电脑维修 郴州打印机维修 打印机加碳粉 电脑安装双系统 苹果电脑双系统 液晶显示器维修 联想笔记本维修 联想笔记本维修电话 戴尔笔记本维修电话 郴州戴尔笔记本维修 戴尔笔记本郴州维修点 华硕笔记本维修点 郴州华硕笔记本维修 郴州笔记本上网维修