我正在处理 C 编程语言 Linked List 并且我有下面的 MCQ :
我们有以下喜欢列表:
typedef struct _elt *PElement;
typedef struct _elt {
void *data;
PElement next;
} Element;
PElement creer_elt_entier(int data) {
PElement pelt=(PElement)malloc(sizeof(Element));
/* Initialize data field*/ ;
pelt->next=NULL;
return pelt;
}
检查正确答案以将 /* Initialize Field */ 替换为适当的指令:
☐ 毛皮->数据=数据;
☐ pelt->data=&data;
☐ 毛皮->数据=*数据;
☐ pelt->data=malloc(sizeof(int));
*(pelt->data) = data;
☐ pelt->data=malloc(sizeof(int));
pelt->data = data;
我无限制地回答了第四个选择,这是正确的答案,但我仍然不知道为什么它是正确的。
pelt->data = data;
不正确,因为您不能将整数分配给空指针。pelt->data = &data;
不正确,因为如果您将指针分配给参数data,pelt->data
则在函数返回时将是垃圾,因为指向的变量将不存在。pelt->data = *data;
不正确,因为您不能取消引用非指针变量。pelt->data = malloc(sizeof(int));
和*(pelt->data) = data;
正确; 指向整数类型堆变量的指针可以分配给空指针,并且堆变量通过首先取消引用来初始化。pelt->data=malloc(sizeof(int));
和pelt->data = data;
不正确,因为你不是一个整数分配给整数指针。本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句