【C语言学习】之二维数组

相同类型的变量可以组成数组,当程序中需要若干类型的一维数组时,可以把他们再合并成一个数组------二维数组

1.二维数组的定义

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

例如:int a[3][4]其中int [3][4]表示二维数组类型,a代表数组名

3表示a中有三个元素,a[0],a[1],a[2] ,相当于定义了三个一维数组,每个一维组中含有四个下标变量,a[0],a[1],a[2]都是一维数组的名字

相当于二维数组中有12个下表变量,逻辑上想象成三行四列,呈现二维表格

注意:

1.二维数组中两个【】中只能出现整型常量而不能出现变量

2.【】【】中代表的分别是二维数组的元素个数和一维数组的元素个数,就是表格的行数和列数

3.数组元素的行列下标都是从零开始的

2.二维数组的元素构成和储存结构

1.二维数组的元素是一维数组

2.二维数组在内存中也是占据一段连续的储存空间,以int a[3][4]为例子,先是a[0]的四个元素,然后是a[1]的四个元素,然后是a[2]的四个元素

3.二维数组名的指针类型

二维数组名a也为退化为指向二维数组第一个元素,也就是第一个一维数组的指针,就是指向a[0]

a+1指向a[1]

a+2指向a[2]

而一维数组a[0]表示指向a[0]内部第一个下表变量的指针,指向a[0][0]

a[0]指向a[0][0]

a[0]+1指向a[0][1]

如果要打印指针的地址的话,会发现a和a+1地址相差16,而a[0]和a[0]+1地址相差4

所以说指针不仅仅是一个地址,它还包含了类型信息

4.二维数组下表变量的表示方法

1.下标法

如果有二维数组int a[3][4],那么a[2][1]可以表示下表变量

2.指针法

在一维数组的下表变量引用中我们学过

a[1]等价于*(a+1)

故a[2][1]可以表示成*(*(a+2)+1)

1.a是指向一维数组a[0]的,所以a+i指向a[i],那么*(a+i)就是a[i]

2.a[i]是一维数组名,指向一维数组中第一个下表变量a[i][0]

3.因为a[i]指向a[i][0],所以a[i]+j指向a[i][j],所以说a[i][j等价于*(a[i]+j)

4.由1可知,a[i]可以用*(a+i)表示,所以a[i][j]等价于*(*(a+i)+j)

3.混合法

5.二位数组的引用

1.引用下标变量

可以用第四节的下表变量的三种表示方法

2.每次只允许操作一个下表变量,若要操作多个下表变量,可以用循环

3.使用数组元素时,下标不能越界

6.二维数组的初始化

1.对所有的下表变量赋初值

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

2.可以对每行加上花括号

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

3.一维数组的个数可以省略,然后电脑自动获取元素个数或者花括号个数来确认一维数组个数

int a[][3]={1,2,3,4},相当于int a[2][3],因为有四个变量,至少得2个4个下表变量大小的一维数组

int a[][3]={{1,2},{3},{4}},相当于 int a[3][3],因为有三个花括号

4.可以只对部分下表变量赋初值

int a[2][3]={1,2,3},那么下表变量的值分别是1,2,3,4,5,6

int a[][3]={{1,2},{1}},那么下表变量的值分别为1,2,0,1,0,0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值