如何在 c 中 malloc a table?

How to malloc a table in c?

我是 C 的新手,正在尝试使用 malloc。我明白 using/freeing 它们的重要性,但我似乎无法掌握如何分配和访问它们。

假设我有一个 table 包含 2 列字符串,第 1 列的最大宽度为 10,第 2 列的最大宽度为 8。假设行数为 3,如下例所示。我如何着手创建 malloc 来保存值的 table 以及如何访问它各自的值?

["Turquoise"]["color"  ]
["Tornado"  ]["weather"]
["Triangle" ]["shape"  ]

非常感谢任何有助于阐明这一点的帮助。

首选方法:

    char ***table = malloc(rows * sizeof(char **));
    for (size_t i = 0; i < rows; i++)
        table[i] = malloc(cols * sizeof(char *));

索引为table[row][col]

但如果 cols 是一个编译时常量,我们可以做得更好并一次分配它:

    char *(*table[cols]) = malloc(rows * sizeof(char *[cols]));

技术上有一种方法可以做到这一点 w/o cols 是一个编译时间常量,但我强烈建议不要这样做。内存已经不够昂贵,无法再获得回报。

您可以像这样使用 malloc 来完成它:

char **array;
int rows,cols;
array=(char **)malloc(rows*sizeof(char *));
for (int i=0;i<row;i++)
{
   array[i]=(char*)malloc(cols*sizeof(char));
}