您的位置:首页 > 职场人生

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

2015-10-13 22:48 323 查看
------- <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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: