C语言如何动态分配二维数组?
使用malloc函数,先分配第一维的大小,然后再循环分配每一维的大小。示例代码,分配3行4列二维数组:
#include <stdio.h>#include <malloc.h>int main(){ int **a; int i, j; a = (int**)malloc(sizeof(int*)*3)
;//为二维数组分配3行 for (i = 0; i < 3; ++i){//为每列分配4个大小空间 a[i] = (int*
)malloc(sizeof(int)*4); } //初始化 for (i = 0; i < 3; ++i){ for (j = 0; j < 4; ++j){ a[i][j] = i+j; } } //输出测试 for (i = 0; i < 3; ++i){ for (j = 0; j < 4; ++j){ printf ("%d ", a[i][j]); } printf ("\n"); } //释放动态开辟的空间 for (i = 0; i < 3; ++i){ free(a[i]); } free(a); return 0;}/*输出:0 1 2 31 2 3 42 3 4 5*/
pb如何声明二维数组?
PB不支持二维动态数组,先定义一个结构s_array,里面包含一个一维数组array1
s_array:
{
int array1[];
}
再定义一个s_array类型的动态数组
s_array array2[];
赋值如下:
array2[1].array1[1] = 1;
array2[1].array1[2] = 2;
array2[1].array1[3] = 3;
array2[2].array1[1] = 10;
array2[2].array1[2] = 20;
array2[2].array1[3] = 30;

