[英]linked list initialization in C programming language
我正在处理 C 编程语言链接列表,我有下面的 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=malloc(sizeof(int));
*(pelt->data) = data;
☐ pelt->data=malloc(sizeof(int));
pelt->data = data;
我无限制地回答了第四个选择,这是正确的答案,但我仍然不知道为什么它是正确的。
pelt->data = data;
不正确,因为您不能将 integer 分配给 void 指针。pelt->data = &data;
不正确,因为如果您将指针分配给参数data ,则当 function 返回时, pelt->data
将是垃圾,因为指向的变量将不存在。pelt->data = *data;
不正确,因为您不能取消引用非指针变量。pelt->data = malloc(sizeof(int));
和*(pelt->data) = data;
是正确的; 指向 integer 类型的堆变量的指针可以分配给 void 指针,并且通过首先取消引用它来初始化堆变量。pelt->data=malloc(sizeof(int));
和pelt->data = data;
不正确,因为您不能将 integer 分配给 integer 指针。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.