gpt4 book ai didi

c - 如何将struct pointer的指针域全部初始化为NULL?

转载 作者:太空狗 更新时间:2023-10-29 15:23:42 25 4
gpt4 key购买 nike

我有以下结构:

 struct node {
int data;
struct node *next;
};


struct node *n1 = malloc(sizeof(struct node));

我不确定如何将 struct pointer 的所有指针字段初始化为 NULL 而不会导致任何潜在的内存泄漏?

最佳答案

在使用malloc 分配结构后,您需要初始化结构的成员:

struct node {
int data;
struct node *next;
};

struct node *n1 = malloc(sizeof(struct node));
n1->data = 0;
n1->next = NULL;

如果您想使用默认值一步初始化您的结构,如果它大得多,这会很方便,请使用具有这些默认值的静态结构:

struct node def_node = { 0, NULL };

struct node *n1 = malloc(sizeof(struct node));
*n1 = def_node;

或者,您可以使用 C99 语法:

struct node *n1 = malloc(sizeof(struct node));
*n1 = (struct node){ 0, NULL };

正如 Leushenko 评论的那样,您可以将任何结构的初始化程序缩短为 { 0 } ,以将所有成员初始化为其类型的适当零:

struct node *n1 = malloc(sizeof(struct node));
*n1 = (struct node){ 0 };

关于c - 如何将struct pointer的指针域全部初始化为NULL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34958467/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com