第八章——多维数组

1.多维数组在内存中的存储顺序为按照最右边的下标率先变化的原则。把数组的第一个下标解释为行或列并不会改变数组的存储顺序,只是行列的排列顺序不同而已,只要每次坚持使用同一种方法,每种解释都是正确的

2.使用指向整形的指针遍历一个整形原速度饿多为数组,这个技巧被称为flattening the array(压扁数组),实际上是非法的,因为从某行移到下一行就无法回到包含上一行的那个子数组,应该使用指向一维整型数组的指针来遍历二维整型数组

3.多维数组的数组名与一维数组名一样是表示数组第一个元素的地址,但对于多维数组来说,第一个元素是又是一个数组,如

int matrix[3][10];matrix的类型是指向包含10个整型元素的第一个子数组的指针,matrix+1指向下一个子数组,指向那个包含10个整型元素的数组的指针,指向matrix的下一行,*(matrix+1)指向matrix数组的第二个子数组的第一个元素,使用指针表示时,

int (*p)[10]=matrix而不能用int *p=matrix,因为matrix是一个指向10个元素数组的指针,而不是一个指向一个整型元素的指针

4.多维数组名作为形参时,无需指明第一维的长度,但必须指明以后各维的长度,如func(matrix)对应的函数原型应该是

void func(int (*p)[10])或者void func(int mat[][10])

5.多维数组的初始化,因为多维数组实际上是复杂元素的一维数组,尽量使用花括号,将每个子数组的逻辑表示清楚

6.指针数组:int *p[10];下标引用优先级高于间接访问,首先执行下标引用,因此p是某种类型的数组,包含10个元素,在取得一个数组元素后,随即执行间接访问操作,这个表达式不再有其他的操作符,结果是一个整型值;我们对该数组的某个元素执行间接访问操作后,得到一个整型值,所以p肯定是一个数组,它的元素是指向整型的指针,如字符串的列表可以用矩阵的形式存储,也可以用指向字符串常量的指针数组来表示,在矩阵中,每行必须与最长字符串的长度一样长,但它不需要任何指针,指针数组本身需要占用空间,但每个指针所指向的字符串所占用的内存空间就是字符串本身的长度

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值