假设我像这样分配了一个数组:
char* array[]={"This"};
后来我想给数组 [ ] 分配一个新值,以便它存储“This”和“That”,有没有一种方法可以更改数组的大小,以便它可以容纳新的值数量?
最佳答案
不,您不能更改数组的大小。您可以使用动态分配的 char*
列表,并根据需要使用 realloc()
:
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
int main()
{
char** array = malloc(1 * sizeof(*array));
if (array)
{
array[0] = "This";
printf("%s\n------\n", array[0]);
char** tmp = realloc(array, 2 * sizeof(*array));
if (tmp)
{
array = tmp;
array[1] = "That";
printf("%s\n", array[0]);
printf("%s\n", array[1]);
}
free(array);
}
return 0;
}
参见在线演示:https://ideone.com/ng00k .
关于c - 在 C 中调整数组大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12917727/