我有一个嵌入式系统的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
}

最佳答案

不确定您是如何尝试访问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;

}

10-02 02:16