假设我分配了一个数组,如下所示:
char* array[]={"This"};
然后,稍后我想为array []分配一个新值,以便它存储“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/