关于结构体数组取地址

关于结构体数组:当我们定义一个结构体数组,然后数组长度是,然后我们定义一个函数,函数的参数是结构体指针

当调用该函数时,如果直接使用取结构体数组变量地址会提示参数类型错误

原因:通常我们在用数组的时候都喜欢用数组名作为数组首地址使用,然后这里结构体数据我也是默认这么想的,但是我用了取地址符,因为用的时候下意识感觉这样有点问题干哈有取地址比较保险,结果在编译的时候还是报错了。

理解:当使用取地址符的时候,获得的是一个指向数组的指针也就是如下:

&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;

}

 

posted @ 2025-01-09 15:57  lqxhgd  阅读(1)  评论(0编辑  收藏  举报