C 为什么使用指针访问的结构成员没有得到更新?
我正在处理的代码中有很多结构,由于某种原因,结构成员的值没有得到更新。我搔了很长时间的头,但找不到原因。我在这里创建了一个类似的代码,最后一行没有做任何事情C 为什么使用指针访问的结构成员没有得到更新?,c,pointers,struct,C,Pointers,Struct,我正在处理的代码中有很多结构,由于某种原因,结构成员的值没有得到更新。我搔了很长时间的头,但找不到原因。我在这里创建了一个类似的代码,最后一行没有做任何事情 star->state.county.street->pondType = TYPE_SQUARE pondType保持为类型\无。有人能解释一下我做错了什么吗?。谢谢 int main() { typedef enum { TYPE_NONE = 0, TYPE_SQUARE =
star->state.county.street->pondType = TYPE_SQUARE
pondType保持为类型\无。有人能解释一下我做错了什么吗?。谢谢
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_t street = { 0, TYPE_NONE };
//...
star->state.county.street = &street;
//...
star->state.county.street->pondType = TYPE_SQUARE;
如果这是完整的代码,那么您的街道成员将指向内存中的某个随机区域。确保指针指向的目标实际存在。比如:
Street_t street = { 0, TYPE_NONE };
//...
star->state.county.street = &street;
//...
star->state.county.street->pondType = TYPE_SQUARE;
请将您的问题显示为a。为什么将包含项放在主函数中?@klutt抱歉,这是错误的。我已经删除了它。@Someprogrammerdude我已经减少了代码。请将您的问题显示为a。为什么要将包含项放在主函数中?@klutt抱歉,这是错误的。我已经删除了它。@Someprogrammerdude我已经减少了代码,所以当我使用这行代码Company_t*star=&companys[IDX_1];时,它不是指向了一个有效的内存位置吗?初始化器{.id=IDX_1}只初始化id成员。它使street成员未初始化。所以当我使用这行代码Company_t*star=&companys[IDX_1];时,这不是指向一个有效的内存位置吗?初始化器{.id=IDX_1}只初始化id成员。它使街道成员不受约束。