我正在写的代码中有很多结构体,但由于某些原因,结构体成员的值没有得到更新。我绞尽脑汁想了很久,却找不到原因。我在这里创建了一个类似的代码,最后这一行没有任何作用。
star->state.county.street->pondType = TYPE_SQUARE
pondType仍然是 "TYPE_NONE"。谁能解释一下我到底做错了什么...谢谢!
int main()
{
typedef enum
{
TYPE_NONE = 0,
TYPE_SQUARE = 1,
TYPE_ROUND = 2,
} PondType_t;
typedef struct
{
PondType_t pondType;
} Street_t;
typedef enum
{
IDX_1 = 0,
IDX_2 = 1,
IDX_3 = 2,
MAX_ID_COUNT = 3
} CompanyID_t;
typedef struct Company_s
{
const CompanyID_t id;
volatile Street_t *street;
} Company_t;
Company_t companies[MAX_ID_COUNT] =
{
{ .id = IDX_1 },
{ .id = IDX_2 },
{ .id = IDX_3 },
};
Company_t *star = &companies[IDX_1];
star->street->pondType = TYPE_SQUARE;
return 0;
}
如果这是完整的代码,那么你的 street
成员指向内存的某个随机区域。确保指针指向的目标确实存在。比如说:
Street_t street = { 0, TYPE_NONE };
//...
star->state.county.street = &street;
//...
star->state.county.street->pondType = TYPE_SQUARE;