在C中调整数组大小

Sam*_*Sam 4 c arrays resize

说我分配了一个这样的数组:

char* array[]={"This"};
Run Code Online (Sandbox Code Playgroud)

然后我想为array []分配一个新值,以便它存储"This"和"That",是否有一种方法可以改变数组的大小以便它可以保存一些新值?

hmj*_*mjd 8

不,您无法更改数组的大小.你可以使用动态分配的列表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.


Ben*_*Ben 5

没有办法调整数组的大小。您可以简单地创建一个大小为 2 的新数组,然后将前一个数组中的所有数据复制到新数组中。 realloc用动态内存为你做。更好的方法是使用诸如LinkedLists或 之类的数据结构Vectors,您可以在网上找到更多相关信息。

  • IMO 也有助于添加特定的代码示例。 (2认同)