c - 指向数组的指针和动态内存分配

标签 c pointers multidimensional-array

如何在 C 中使用指向数组的指针和动态内存分配来创建二维数组,而不使用 typedef 并且在指向数组的指针声明时不使用 malloc?我们如何对指向数组的指针进行类型转换? 一般来说,我们如何创建 a[r][c] ,从 int (*a)[c] 开始,然后为“r”行分配内存?

例如。如果我们需要创建 a[3][4] ,我们是这样做的吗?

int (*a)[4];

a= (int (*) [4]) malloc (3*sizeof (int *));

最佳答案

For ex. If we need to create a[3][4] , Is this how we do ?

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 ) );

第一种初始化形式的信息量更大。

关于c - 指向数组的指针和动态内存分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29624765/

相关文章:

c++ - 如何动态创建一个指针数组?

java - 使用一个 3d 阵列还是两个 2d 阵列更好?

c - post_menu 段错误(核心转储)

调用 "fork() execvp() _exit()",进程没有退出

c - 将字符数组传递给c中的函数

c - 在 scanf 中没有 `&` 的情况下 %s 在 c 中如何工作?

Java:在不指定数组大小的情况下声明多维数组(例如,new int[10][])

arrays - Swift:获取二维数组中最小项的索引

c - memcpy 的奇怪结果

c++ - OpenGL 线被其他对象隐藏