关于结构体数组:当我们定义一个结构体数组,然后数组长度是,然后我们定义一个函数,函数的参数是结构体指针
当调用该函数时,如果直接使用取结构体数组变量地址会提示参数类型错误
原因:通常我们在用数组的时候都喜欢用数组名作为数组首地址使用,然后这里结构体数据我也是默认这么想的,但是我用了取地址符,因为用的时候下意识感觉这样有点问题干哈有取地址比较保险,结果在编译的时候还是报错了。
理解:当使用取地址符的时候,获得的是一个指向数组的指针也就是如下:
&tmp 就等于test (*)[1],也就是说我们获取的实际是数组的地址,但是参数里面是一个具体的单个结构体指针
所以需要&tmp[0],获取结构体数组中的单个元素地址,就可以了
typedef struct
{
uint8_t flag;
uint8_t uid;
}test;
static test tmp[1];
static void fun(const test* para)
{
printf("hello\r\n");
}
int main(void)
{
fun(&tmp[0]);//正确
//fun(&tmp);//错误
return 0;
}