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