//根据几篇优秀文章和谭浩强c语言书,总结的形象理解创建二维动态数组
1.排长-班长-战士
参考C程序设计第5版(谭浩强)Page245-246,把二维数组形象的比作了排长-班长-士兵模型。
2.三种分配内存的方式
2.1 先班长后战士(先设置行数,再列数)
2.1.1代码
#include "stdafx.h"
#include "stdlib.h"
int main(int argc, char* argv[])
{
int m,n;//m为行数,n为列数
int i,j;
int **p;
printf("请输入矩阵的维数:");
scanf("%d,%d",&m,&n);
printf("m=%d;n=%d\n\n",m,n);
//为排长分班长
p=(int **)malloc(sizeof(int *)*m);
//(int **) 的作用是将地址转换成int **型,然后存放在p中。
//申请一个指针数组空间,存放指针。
//等于申请了5个一维数组,5行。
//等于为排长任命了5个班长。这5个班长都是指针,放在一个数组里
//为班长分战士
for(i=0;i<n;i++)
p[i]=(int *)malloc(sizeof(int)*n);
//为每个一维数组分配能存放n个整形数据的内存空间
//等于设置列的数量
//等于为每个班长分配了n个战士
//检验
int k=0;
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
p[i