如何在C和动态内存分配中使用指向数组的指针创建二维数组,而不使用typedef并且在指向数组声明的指针时不使用malloc?我们如何对指向数组的指针进行类型转换? 一般来说,如何创建一个[r] [c],从int(* a)[c]开始,然后为“r”行分配内存?
对于前。如果我们需要创建a[3][4]
,我们会这样做吗?
int (*a)[4];
a= (int (*) [4]) malloc (3*sizeof (int *));
答案 0 :(得分:2)
对于前。如果我们需要创建[3] [4],我们这样做了吗?
int(* a)[4];
a =(int(*)[4])malloc(3 * sizeof(int *));
int (*a)[4] = malloc ( 3 * sizeof ( int [4] ) );
或者
int (*a)[4] = malloc ( 3 * sizeof ( *a ) );
或者
int (*a)[4] = malloc ( 12 * sizeof ( int ) );
初始化的第一种形式提供了更多信息。