不,您无法更改数组的大小.你可以使用动态分配的列表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;
}
Run Code Online (Sandbox Code Playgroud)
请参阅在线演示:https://ideone.com/ng00k.
没有办法调整数组的大小。您可以简单地创建一个大小为 2 的新数组,然后将前一个数组中的所有数据复制到新数组中。 realloc用动态内存为你做。更好的方法是使用诸如LinkedLists或 之类的数据结构Vectors,您可以在网上找到更多相关信息。