我有一个3d的char指针数组:char ***semicols
。
我希望这些价值观能够与
semicol[0][0] = "ls"
semicol[0][1] = "~"
semicol[1][0] = "man"
semicol[1][1] = "grep"
等等。我在其中存储了一个
char **args
数组,并且我也知道该数组中的分号数。我要创建具有上述结构的较小的char** ARGS
,因此要创建semicol[0] = {"ls", "~"}
。但是我事先不知道每个分号参数的字符串数,因此无法将其设置为静态
char *semicols[][]
。那么,如何合理地为3d数组进行malloc分配,或者有更好的方法来执行我尝试做的事情? 最佳答案
您不需要3D的字符指针数组,但是需要2D的字符指针数组。
从Best way to allocate memory to a two-dimensional array in C?,您可以分配如下所示的二维字符指针数组。
char* (*semicol) [col] = malloc(sizeof(char* [row][col]));
要么
char* (*semicol) [col] = malloc(sizeof(*semicol) * row); //avoids some size miscomputations, especially when the destination type is later changed. //Refer chqrlie's comment.
成功分配内存后,您可以执行
semicol[i][j] = "text";
您可以通过调用
free(semicol);
释放分配的内存