c - 这个指针初始化是必要的吗?

标签 c initialization malloc

假设我有以下内容:

 CHARLINK * _init_link(CHARLINK **link)
 {
    short i;
    (*link)->cl = (CHARLINK **) calloc(NUM_CHARS, sizeof(CHARLINK *));
    for (i = 0; i < NUM_CHARS; i++)
        (*link)->cl[i] = NULL;
    return (*link);
}

是否需要循环将每个元素初始化为 NULL,或者它们是否会从 calloc 自动为 NULL?

最佳答案

是的,在循环中赋值给NULL是必须的。 calloc 初始化为所有位 0。但是空指针可能不会这样表示。它取决于实现。因此赋值是必要的。

关于c - 这个指针初始化是必要的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2837354/

相关文章:

复制链表中的结构

单变量初始化的 C++ 风格

c++ - 在 C++ 中初始化位域结构的最佳方法是什么?

c++ - 在 C++ 中,如何在没有动态分配(即 NEW)的情况下将对象初始化为对象内部的指针?

谁能指出为什么会发生错误?错误是 "expected "=",";","asm"or __attribute__ before "<"

我可以使用 fgets 来接受字符指针数组中的字符串而不是 scanf

c++ - 有效地将多个一维数组中的数据收集到单个一维数组中

c - 为什么 GLib 会重新定义类型?

c - 释放堆内存后将指针设置为 NULL

c - 在 C 中使用 MPI_Type_create_struct() 传输包含动态数组的结构