繁体   English   中英

结构C中的双重引用

[英]Double Dereference in struct C

我有以下代码。 看来阅读顺序是错误的。 有什么帮助吗?

#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。

您没有初始化coord变量,因此也应该为此分配一些空间。

head->coord = malloc( sizeof (COORD) );

但是在这种情况下,最好将COORD置于NOD而不是引用它!

所以:

typedef struct nod{
   COORD coord;
   struct nod *urm;
}NOD;

仅当要交换大量对象或对象更复杂时,才应该真正指向它。

您尚未初始化head->coord 取消引用未初始化的指针会导致未定义的行为 您需要执行以下操作:

  head->coord = malloc( sizeof (COORD) );

您还应该检查malloc()的返回值是否失败。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM