gpt4 book ai didi

c - 展开一个非指针数组

转载 作者:太空宇宙 更新时间:2023-11-04 08:14:06 26 4
gpt4 key购买 nike

假设我在 C 中有一个数组:

char *list[3] = {"Hello", "world", "!"};

我想扩展它。如果我将该数组声明为:

char **list = (char **) malloc(3 * sizeof(char *));  // Or sth. like that...

我可以调整它的大小:

realloc(list, 5 * sizeof(char *));  // Not sure now if I should use `char *` or `char **`

如果我尝试这样做:

char *list[3] = {"Hello", "world", "!"};
realloc(list, 5 * sizeof(char *)); // Not sure now if I should use `char *` or `char **`

它说它无法调整未分配的内存大小。
好的,但是我怎样才能像这样调整数组的大小呢?

最佳答案

你不能。如果你有一个静态大小的数组,你就不能改变它的大小。如果您需要能够更改大小,请不要使用静态大小的数组。

PS:你不应该忽略realloc的返回值。无法保证 realloc 能够增加给定的内存块,因此它可能会返回一个指向全新内存块的指针(释放旧内存)。因此,您应该始终使用 realloc 返回的指针,并且永远不要假设旧指针在调用 realloc 后仍然有效。

关于c - 展开一个非指针数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36841682/

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