2014-11-14 38 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分配给结构类型不起作用。