代码之家  ›  专栏  ›  技术社区  ›  Daniel

C-初始化函数中的全局数组

  •  7
  • Daniel  · 技术社区  · 15 年前

    我有一个数组,我想使它成为全局的,我想在函数调用中初始化它。 我想先声明,但不知道它的大小:

    char str[];
    

    然后初始化它:

    str = char[size];
    

    4 回复  |  直到 15 年前
        1
  •  9
  •   Bertrand Marron    15 年前

    malloc

    char *str;
    

    str = malloc(sizeof(*str) * size_of_array);
    

    size_of_array str char

    if (str == NULL) {
        // allocation failed
        // handle the error
    }
    

    free

        2
  •  2
  •   Paul R    15 年前

    使全局数组声明如下所示:

    char *str = NULL;
    

    然后在初始化函数中执行如下操作:

    void init(int size)
    {
        ...
        str = malloc(size * sizeof(char));
        ...
    }
    
        3
  •  1
  •   Å imon Tóth    15 年前
    char* str;
    
    str = (char*)malloc(size*sizeof(char));
    

    你可以跳过 *sizeof(char) 自从 sizeof(char) == 1 根据定义。

    别忘了用 free

        4
  •  1
  •   Saurabh Manchanda    15 年前

    创建一个 char* str; 而不是数组。然后,使用malloc或calloc分配所需的内存量,并在函数调用本身中进行初始化。