c - 在 C 中调整数组大小

标签 c arrays resize

假设我像这样分配了一个数组:

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/

相关文章:

c - malloc(0) 的行为

c - 没有明确长度的 sizeof 数组

javascript - 使数组中对象的出现成为属性

Javascript for 循环和数组

c - #define 函数给了我意想不到的结果

c - 如何比较 C 程序文件中的字符串结构数组

c - 如何修复 C 中结构内参差不齐的矩阵上不稳定的 free() 调用

java - 动态调整 JScrollPane 的大小?

Java:在我调整窗口大小之前图像不会显示

android - 为什么 Galaxy Nexus/Android 4 上的视口(viewport)标签不起作用?