关于二维数组与指针的知识,及常见错误

        二维数组与指针

        

        定义一个3行4列的数组a,数组a中的(1,9,17)可以看作是所在行的首地址,数组的每一行可以看做是一个一维数组。所以说,二维数组行的首地址称为行指针。

        对于数组a,将每1行看成1个元素,数组a包含3个虚拟元素,即a[ 0 ],a[ 1 ],a[ 2 ],此时一维数组a可以进行a + 0,a + 1,a + 2,a + 3 的变址运算,a + 0,a + 1,a + 2,a + 3就相当于&a[ 0 ],&a[ 1 ],&a[ 2 ],&a[ 3 ],也就是数组的行指针

        行指针的特性就是:指针加1就是移动了一行。a + i表示第 i 行的行指针,也就是第 i 行的首地址。

        元素的地址也就是元素的指针,也叫列指针,元素的指针加1就移动了一个元素的位置。第 i 行 j 列的元素指针可以表示为 a[ i ] + j。如图: 

         取一下数组a每行的首地址

         并观察一下每一行的元素地址是怎么变化的

         总结

         那么,指针法引用元素就可以表示为 *(a[ i ] + j )等价于 a[ i ] [ j ],也可用 * (*(a + i) + j)表示。

        易错点

        打印a[ 0 ] + 1表示打印第0行第1列元素的地址;

        打印&a[ 0 ] + 1时,此时&a[ 0 ]表示数组a的首地址,+ 1表示移动一行,与 a + 1相等

        首地址和行地址的区别

        首地址表示数组第一个元素的首地址,a。

        行地址表示第 a + i行的首地址,a[ i ] == *(a + i)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值