C Malloc多维字符数组

She*_*ker 2 c arrays malloc multidimensional-array

我想在C中动态分配(malloc)一个多维字符数组.该数组将具有以下格式:

char *array[3][2] = {
    {"one","two"},
    {"three","four"},
    {"five","six"}
};
Run Code Online (Sandbox Code Playgroud)

在创建数组之前,我已经知道多维数组中的行数和所有字符数组的长度.我怎么会malloc这样的字符数组?

提前致谢!

Cha*_*rns 6

这是分配char*的二维数组的一种方法.

之后,您可以分配内容,如[1] [2] ="foo"; 请注意,数组的元素初始化为(char*)0.

#include <stdio.h>
#include <stdlib.h>

char ***alloc_array(int x, int y) {
    char ***a = calloc(x, sizeof(char **));
    for(int i = 0; i != x; i++) {
        a[i] = calloc(y, sizeof(char *));
    }
    return a;
}

int main() {
    char ***a = alloc_array(3, 2);
    a[2][1] = "foo";
    printf("%s\n", a[2][1]);
}

[Charlies-MacBook-Pro:~] crb% cc xx.c
[Charlies-MacBook-Pro:~] crb% a.out
foo
Run Code Online (Sandbox Code Playgroud)