点点滴滴,从基础做起......
这里介绍动态创建二维数组:
1、定义一个二维指针~;
2、然后申请一维地址空间,再为每一个一维指针申请一行数据空间,并赋值给二维指针;
3、输入数据;
4、释放内存(先释放一维指针上的,再释放二维指针上的)。
直接上代码(这里的编译器是:Visual Studio 2012)(其他编译器,可将scanf_s改成scanf运行):
#include <stdio.h>
#include <stdlib.h>
int main()
{
int **p; //定义二维指针
int m, n;//行数和列数
int i, j;
printf("please input the arry of rows and columns:");
scanf_s("%d%d", &m, &n);
if (m <= 0 || n <= 0)
return -1;
//分配指针空间
p = (int **)malloc(sizeof(int *) *m);
for (i = 0; i < m; i++)
p[i] = (int *)malloc(sizeof(int) * n);
//输入数据
printf("please input data into this arr:");
for (i = 0; i < m; i++)
for (j = 0; j < n; j++)
scanf_s("%d", &p[i][j]);
printf("The arry has %d rows and %d columns:\n", m, n);
for (i = 0; i < m; i++)
for (j = 0; j < n; j++)
printf("%d ", p[i][j]);
printf("\n");
//释放内存
for (i = 0; i < m; i++)
free(p[i]);
free(p);
return 0;
}