c语言分配动态二维数组的形象理解

本文通过排长-班长-战士的模型形象地解释了C语言中动态分配二维数组的三种方式:先班长后战士(先行后列)、先确定每个班的战士(第二维已知)和先确定班长(第一维已知)。详细分析了每种方式的内存分配过程,并提供了代码示例和图解。
摘要由CSDN通过智能技术生成

//根据几篇优秀文章和谭浩强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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值