结构数组,其成员是指针

时间:2015-03-18 08:23:09

标签: c pointers struct

我有一个嵌入式系统的C代码,我将Var的地址分配给结构指针成员。问题是当我执行代码时,我在Var中看到了错误的地址而不是structVarArray[1]地址。但是,如果我将structVarArray类型修改为const,那么我会得到正确的地址,但随后我无法修改布尔标志,因为它变为const。有什么想法吗?

UInt8 Var;
typedef struct
{
 UInt8 * ptrVar;
 Boolean flag;
}structType;

structType structVarArray[1] =
// const structType structVarArray[1] =
{
 {&Var,  FALSE}
};

void main(void)
{
 // Code using the above array
}

1 个答案:

答案 0 :(得分:0)

不确定您是如何尝试访问structVarArray的,下面是一个工作示例。

#include <stdio.h>

unsigned char Var;
struct structType
{
    unsigned char * ptrVar;
    bool flag;
};

structType structVarArray[] =
{
    {&Var, false}
};

int main(void)
{
    *structVarArray[0].ptrVar = 50;

    printf("Var = %d\n", Var);  // prints 50

    structVarArray[0].flag = true;

    return 0;

}