c - 将所有结构指针成员设置为 NULL

标签 c pointers struct null members

如果我通过 malloc 将一个指向结构的指针设置为指向一 block 内存,所有成员都会初始化为各自的默认值吗?例如 int 到 0 和指针到 NULL?我看到他们是根据我写的这个示例代码做的,所以我只是想让有人确认我的理解。感谢您的输入。

#include <stdio.h>
#include <ctype.h>
#include <stdbool.h>
#include <stdlib.h>

typedef struct node
{
    bool value;
    struct node* next[5];
}
node;

int main(void)
{
    node* tNode = malloc(sizeof(node));

    printf("value = %i\n", tNode->value);

    for (int i = 0; i < 5; i++)
    {
        if (tNode->next[i] == NULL)
            printf("next[%i] = %p\n", i, tNode->next[i]);
    }
}

最佳答案

malloc() 函数从不初始化内存区域。您必须使用 calloc() 专门将内存区域初始化为零。您看到初始化内存的原因已解释 here.

关于c - 将所有结构指针成员设置为 NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28017373/

相关文章:

c++ - 是否可以简单地序列化 C++ 对象

c - 如何将位于结构体中的二维数组中的每个字符保存并加载到文件中? C

c - 字符串与二维数组 C 比较

调用包含指针的函数

c - 奇怪的 Char* 截断

c - 编译C程序时一直报错:(

c++ - 如何将未知大小的二维数组传递给函数

c++ - 如果在 C++ 中创建 arr 的函数外部调用,delete [] arr 是否会释放内存?

C 程序问题 "pointer being freed was not allocated"

c - 结构数组在声明时存储垃圾