假设我分配了一个数组,如下所示:

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/

10-11 19:14
查看更多