黑马程序员——C基础---二维数组

------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------



二维数组即已数组作为元素的数组。


定义方法为: 

类型说明符 数组名[一维长度][二维长度];二维数组名是指向数组的第一个元素的指针变量。二位数组可以看成是一维指针数组。

存储方式:

设有二维数组  int a[2][3] = {{0,1,2},{3,4,5}};i表示一维,j表示二位,则其在内存中的存储方式可以表达为

0x7fff5fbff7c0a[0][0] 
0x7fff5fbff7c4a[0][1] 
0x7fff5fbff7c8a[0][2] 
0x7fff5fbff7cca[1][0] 
0x7fff5fbff7d0a[1][1] 
0x7fff5fbff7d4a[1][2] 

可看出二维数组和一维数组的存储方式是一样的,都是线性存储。

访问元素方式:

二维数组a的第一维为二维数组的元素,每个元素是包含3个int类型元素的数组。数组名a为指向二维数组第一个元素的指针常量,此二维数组分配内存的首地址为0x7fff5fbff7c0,a代表0x7fff5fbff7c0常量。是一个指向一个类型为int、维数为3的一维数组的指针常量。a + 1的值视a的类型,是一个指向一个类型为int维数为3的一维数组的指针常量,则a + 1就是下一个类型为int维数为3的一维数组的地址。所以a+i 指向a[i],而a[i]+j指向a[i][j],*(a[i]+j)则表示a[i][j]的值,而*(*(a+i)+j) 则等于*(a[i]+j).

所以访问元素a[1][0]的值方法有:

*a[1]

*(*(a+1)+0) ==** (a+1)

a[1][0]

三种方式

取出a [1][0]地址的方式有:

*(a + 1)

&a[1]

&a[1][0])

a[1])

a + 1




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值