[英]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.