【发布时间】:2017-01-13 02:44:23
【问题描述】:
我有以下代码。看来阅读顺序是错误的。有什么帮助吗?
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct punct{
int x;
int y;
}COORD;
typedef struct nod{
COORD *coord;
struct nod *urm;
}NOD;
int main()
{
NOD *head= malloc( sizeof(NOD) );
scanf("%d", &head->coord->x );
scanf("%d", &head->coord->y );
printf("%d, %d", head->coord->x , head->coord->y);
return 0;
}
我已经成功地使用head->coord 成功地访问了结构的 x 字段,据我所知,这就是我的代码的问题。我已经在第一个结构的第一个字段上,因此我无法访问 x/y。
【问题讨论】:
-
你在哪里初始化
head->coord? -
尝试一些适当的括号:
scanf("%d", &((head->coord)->y)); -
@OliverCharlesworth 谢谢,没想到。以为我已经完成了 head 的初始化。
-
@nica.dan.cs 已经做了,没用。
-
@nica.dan.cs:这些括号不会改变评估顺序:它添加了额外的文本,效果没有区别。您可能想查看expression evaluation order。
标签: c struct dereference