一、二维数组使用
参考文章C语言二维数组指针(指向二维数组的指针)详解
我们知道,c语言中指针声明需要知道指向对象所占大小。
uint8 *p 指向的对象大小为4;所以*(p+1)移动4位;
uint8 *p[4],是[]比*优先级高,所以p为指针数组(本质像个数组),大小为24;
uint8 (*p)[4],为数组指针,p所指对象大小为16位,所以*(p+1)移动16位;*p所指对象大小为4,所以*p+1移动4位。
二、二维数组函数调用
参考文章/view/:///qq_43868654/article/details/84641383
根据函数的声明,我们就能理解为何文章中不同的二维数组参数在函数体中的使用方法不同。
void function(uint8 *p)传入二维数组的首地址,在函数体中指向对象大小为4,所以p+1移动4位。
使用:funcition(a) ,function(a[0]),a为二维数组,
函数体中使用:num=*(p+n),相当于把二维数组按顺序排列成一维数组了