指针和二维数组
- 二维数组的地址认知,很猛:
二维数组中独有说法:父子数组
二维数组本质还是数组,不同点是数组元素还是个数组(子数组)
int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
数组名=地址
行地址=父数组,地址=a,数组名 a+1偏移了16字节
列地址=子数组,地址=a[0],a[1],a[2]a[0]+1偏移了4字节
a[0]等价与&a[0][0]
a[1]等价于&a[1][0]
a[2]等价于&a[2][0]
*思考一个问题:a是谁的地址,a[0]又是什么,那*a或者
*(a+0)呢?
a表示父数组的意思,a[0]、*a表示子数组的地址
*a等价于*(a+0)
通过编程认证认知:
a[0]可以写成*(a+0),偏移1: a[0]+1可以写成*(a+0)+1
a[1]可以写成*(a+1),偏移1: a[1]+1可以写成*(a+1)+1
a[2]可以写成*(a+2),偏移1: a[2]+1可以写成*(a+2)+1
树立认知:
这个嵌入式工程师笔试题会考