双指针结构数组编译错误

时间:2011-11-07 14:05:33

标签: 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 

这样做的正确方法是什么?

2 个答案:

答案 0 :(得分:2)

您无法分配数组。你也在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);

答案 1 :(得分:0)

尝试:

typedef struct
{
 CAMERA * device_list
} main_struct;
main_struct MAIN_STRUCT;



{

   MAIN_STRUCT myMainStruct;
   myMainStruct.device_list = device_list;

}

通过你正在做的事情你创建一个指向主结构的指针数组; HTH

马里奥

相关问题