如何将结构指针的所有指针字段初始化为NULL?

Tom*_*Tom 4 c struct pointers

我有以下结构:

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


struct node *n1 = malloc(sizeof(struct node));
Run Code Online (Sandbox Code Playgroud)

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

chq*_*lie 5

使用malloc以下方法分配结构后,需要初始化该结构的成员:

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

struct node *n1 = malloc(sizeof(struct node));
n1->data = 0;
n1->next = NULL;
Run Code Online (Sandbox Code Playgroud)

如果您要使用默认值一步一步地初始化结构,如果默认值要大得多,那么可以方便使用,请使用具有这些defaut值的静态结构:

struct node def_node = { 0, NULL };

struct node *n1 = malloc(sizeof(struct node));
*n1 = def_node;
Run Code Online (Sandbox Code Playgroud)

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

struct node *n1 = malloc(sizeof(struct node));
*n1 = (struct node){ 0, NULL };
Run Code Online (Sandbox Code Playgroud)

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

struct node *n1 = malloc(sizeof(struct node));
*n1 = (struct node){ 0 };
Run Code Online (Sandbox Code Playgroud)