使用malloc函数,先分配第一维的大小,然后再循环分配每一维的大小。示例代码,分配3行4列二维数组:

;//为二维数组分配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*/
二维数组跟函数的关系,同一维数组分为两种情况
1>数组中得元素作为形参(值传递)
2>数组名作为形参 (地址传递也就是指针,这样可以改变数组的变量值)
注意点同一维数组
应用的话可以作为地图做迷宫,推箱子,五子棋游戏
1、数组,顾名思义,是相同类型的数组成的一个组,也就是说是把相同类型的一系列数据统一编制到某一个组别中。这样就可以通过数组名+索引号简单快捷的操作大量数据。这就和全校学生一样,把学生分成多个班级,每个学生都是班级中的一员,如果要找张三,如果没有班级的话,就要在全校学生中一个一个寻找,一直到找到为止;但是如果引入了班级,就可以在某某班级中寻找张三,这样就更加方便快速了。2、一般有四种数组定义方式,以一维数组为例://定义指定维数的数组int arr[10]; //定义不指定维数的数组,数组维数有初化列表元素个数决定。 int arr[] = {1,2,4}; //定义指定维数的数组,初始化不完全时,系统将未初始化元素初始化为0int arr[10] = {1,2}; //动态分配一个数组。下面分配了一个有10个元素的数组。int *arr =(int *) malloc(10 * sizeof(int));