簡體   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