c - 在 C 中,如何将结构中指针数组中的所有元素初始化为 null?

标签 c arrays pointers initialization

我是 C 语言的新手,我想知道如何将指针数组中的所有元素设置为 null。 我创建了一个包含指向指针数组的指针的结构,我想将所有这些指针设置为空。

结构如下:

typedef struct
{
    char **array;
    int size, capacity;
} ArrayList;

这里是我尝试创建一个指针数组并将它们初始化为 null 的地方:

ArrayList *createArrayList(int length)
{
    int i;
    ArrayList* strArray = malloc(sizeof(ArrayList));
    for(i=1; i<length; i++)
    {
    strArray->array[i] = NULL;
    }
return strArray;
}

不幸的是,这会产生段错误。任何帮助将不胜感激。

最佳答案

strArray->array[i] = NULL;

您不能这样做,因为您还没有为array 分配内存。您需要将其分配为

strArray->array = malloc(sizeof(char *) * length);

然后像您所做的那样将所有元素初始化为 NULL

您还可以使用 calloc 将内存设置为 0,在这种情况下您不需要 for 循环。

strArray->array = calloc(length, sizeof(char *));

关于c - 在 C 中,如何将结构中指针数组中的所有元素初始化为 null?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21507162/

相关文章:

c - 有没有办法遍历多个结构,比如通过一个数组?

c - 从文件读取并放入二维缓冲区

c - C中 bool 表达式的结果

将视频转换为字节数组的java代码

javascript - 更改两个数组总是同时更改另一个数组

c++ - 数组中连续元素的总和,C++

c++ - 链表内存读取错误

c - 为什么这个 ptrace 错误?

当 num 在 C 中为 float 时转换为 (&num) 的 (int *)

c - 简单的C指针混淆