c - 指向结构数组编译错误的双指针

标签 c syntax

我定义了这个结构:

typedef struct
{
    uint16_t short_addr;
    uint64_t ieee_addr;
    uint8_t  LQI;
    uint16_t PANId;
} CAMERA;

然后我声明了它的一个数组,如下所示:

static CAMERA device_list [ MAX_NUMBER_OF_DEVICES ];

所有这些都在特定模块中定义和声明。 现在,我想在一个新结构中从主模块创建一个指向该数组的指针。 但是我遇到了编译错误,我不太确定该怎么做。

typedef struct
{
 CAMERA * device_list[ MAX_NUMBER_OF_DEVICES ];
} main_struct;
main_struct MAIN_STRUCT;

但问题是我无法将指针的值分配给它。

MAIN_STRUCT.device_list = device_list;

导致以下编译错误:

Error[Pe137]: expression must be a modifiable lvalue 

正确的做法是什么?

最佳答案

您不能分配给数组。您还在 main_struct 中声明了错误,将其声明为指针就足够了(现在您已将其声明为指针数组。)

typedef struct
{
 CAMERA * device_list;
} main_struct;

它应该可以工作。

如果你真的想要它作为一个数组,那么将它声明为一个数组:

typedef struct
{
 CAMERA device_list[ MAX_NUMBER_OF_DEVICES ];
} main_struct;

然后从另一个数组复制到新数组:

memcpy(MAIN_STRUCT.device_list, device_list, sizeof(CAMERA) * MAX_NUMBER_OF_DEVICES);

关于c - 指向结构数组编译错误的双指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8037536/

相关文章:

c++ - CUDA-CUBLAS : issues solving many (3x3) dense linear systems

c - C编程中的当前维数组

C++ EOF 命名空间

python - 打印命令中的python语法错误

c - 在空间有限的情况下有效存储信息的不同方法

c - 指针错误信息

javascript - 什么是 javascript “...array” 参数?

c++ - 如何在没有 2^n if 语句的情况下启动具有许多 bool 参数的函数模板

apache-spark - pySpark 中这两种不同形式的排序(orderBy)有区别吗?

syntax - 为什么我的F#代码中的空格会导致错误?