2014-11-14 77 views
0

我不確定我是否特別清楚。 但病得不明確。 我想分配一個NULL值給一個指針。如何將null指定給struct的指針?

給出的代碼:

typedef struct Date 
{ 
int year; 
int month; 
}Date; 

typedef struct Record 
{ 
    char name[20]; 
    char cdate[20]; 
    float quanitity; 
    int barcode; 
    Date date; 
}Record; 

,然後在主:

Record *records = malloc(10 * sizeof(Record)); 
records[0] = NULL; 

這是行不通的,當我定義premitive類型的similliar陣列,例如詮釋 我可以分配值,或NULL 例如,對於

int *avi = malloc(sizeof(int)*10); 
avi[0] = 3; 
avi [0] = NULL; 

它工作正常,我已經打印了值並看到了更改。 但是,當我對指向struct的指針數組做同樣的操作時,如上面定義的 我只是不能指定NULL值。

無能爲力。 我正在使用eclipse IDE。 在此先感謝。

+0

你不能那樣做,因爲你不能爲NULL結構分配NULL。你必須爲每個元素賦NULL。 – bitcell 2014-11-14 16:25:20

+0

您創建了一個Record的數組,而不是指向Record的指針數組。將NULL分配給數組的單個元素是沒有意義的。 – 2014-11-14 16:25:43

+0

'* records [0] .name = 0;' – BLUEPIXY 2014-11-14 16:29:29

回答

1

你的問題是records是一個指向10個對象的指針。因此,records[0]是第一個對象。您無法將對象設置爲NULL

它只能用於int,因爲您將int設置爲零,而不是NULL

0

NULL是一個內置常量,其值爲0.這就是爲什麼你可以將它分配給基本類型,如int和char。它適用於指針,因爲C語言的特定結構告訴編譯器,「0」表示「指向無效內存地址」,可能不是實際值「0」。

由於無法將結構設置爲整數類型,因此將NULL分配給結構類型不起作用。