如何在 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));
}
我是 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));
}