C语言中的链表初始化

4everLRG

我正在处理 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;

我无限制地回答了第四个选择,这是正确的答案,但我仍然不知道为什么它是正确的。

奥古斯特·卡尔斯特罗姆
  1. 第一个选项pelt->data = data;不正确,因为您不能将整数分配给空指针。
  2. 第二个选项pelt->data = &data;不正确,因为如果您将指针分配给参数datapelt->data则在函数返回时将是垃圾,因为指向的变量将不存在。
  3. 第三个选项pelt->data = *data;不正确,因为您不能取消引用非指针变量。
  4. 第四个选项pelt->data = malloc(sizeof(int));*(pelt->data) = data;正确; 指向整数类型堆变量的指针可以分配给空指针,并且堆变量通过首先取消引用来初始化。
  5. 第五个选项pelt->data=malloc(sizeof(int));pelt->data = data;不正确,因为你不是一个整数分配给整数指针。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章