动态数组笔记

博客开头先提到一点:由于我异常的弱 ,所以这个部分更倾向于实用而不是介绍理论。
来让我们从动态数组的第一个函数开始:
malloc:
这个函数的原型是:
void*malloc(unsigned int size);
这个函数使用时需要先定义一个特定的类型,再用这个类型接受这个开辟的空间。
来个完成的开辟的例子吧

#include<stdio.h>
#include<stdlib.h>//忘了提到了,用动态数组时必须用这个头文件
int main()
{
	int*p=NULL;
	int n;
	scanf("%d",&n);//实现了想开辟几个就开辟几个的特点
	p=(int*)malloc(n*sizeof(int));

马后炮:这个程序的最后一行还应当进行详细解释:
(int*)代表着我要把他改成int型,如果我要float型,那就应该是(float*)。
(nsizeof(int))是因为在不同的操作系统中,可能每种字符的长度并不相同,所以需要增强程序可移植性。
接下来介绍他的孪生弟兄:calloc
孪生弟兄就是个进化版,它会把最开始的开辟的空间都初始化成0。
但使用时有点不相同—还是上面的例子:
(int
)calloc(n,sizeof(int));
这样就很清晰了,只是把需要开辟的空间单独拎到前面了而已。
当然,动态数组必然可惜随时更改啊:这就要引出我们可爱的realloc。
还是之前的那了例子:realloc(voidp,100sizeof(int))
这样我们就改变了这个空间。
二维数组的空间开辟也是同理:
只是开辟了一个nm的空间而已,只举一个例子:
(int
)malloc(mnsizeof(int));
开辟的过程可能会出现错误,所以我们一定要判断开辟的空间的指针是否是空指针

if(p==NULL)
	exit(1)//如果是空指针,就要退出程序

内存的释放:
很简单 free函数:()里放的是指针p。
最后给出mooc上的一个代码:
这个题的目的是编程输入m个班学生(每个班n个学生)的某门课成绩,计算并输出平均分。

#include<stdio.h>
#include<stdlib.h>
void InputArray(int*p,int m,int n);
double Average(int*p,int m,int n);
int main()
{
	int *p=NULL,m,n;
	double aver;
	printf("%d",&m);
	scanf("%d",&m);
	p=(int*)calloc(m*n,sizeof(int));
	if(p==NULL)
	{
		printf("No enough memory!\n");
		exit(1);
	}
	InputArray(p,m,n);
	aver=Average(p,m,n);
	printf("aver=%.1f\n",aver);
	free(p);
	return 0;
}
void InputArray(int *p,int m,int n)
{
	for(int i=0;i<m;i++)
	{
		printf("Please enter scores of class %d:\n",i+1);
		for(int j=0;j<n;j++)
		{
			scanf("%d",&p[i*n+j]);
		}
	}
}
double Average(int*p,int m,int n)
{
	int sum=0;
	for(int i=0;i<m;i++)
	{
		for(int j=0;j<n;j++)
		{
			sum=sum+p[i*n+j];
		}
	}
	return (double)sum/(m*n);
}

好了,菜鸡对动态数组的介绍到此结束,由于我本人并不知道是否完全正确,如果有错误,请批评指出。
return code;

根据原作 https://pan.quark.cn/s/0ed355622f0f 的源码改编 野火IM解决方案 野火IM是专业级即时通讯和实时音视频整体解决方案,由北京野火无限网络科技有限公司维护和支持。 主要特性有:私有部署安全可靠,性能强大,功能齐全,全平台支持,开源率高,部署运维简单,二次开发友好,方便与第三方系统对接或者嵌入现有系统中。 详细情况请参考在线文档。 主要包括一下项目: 野火IM Vue Electron Demo,演示如何将野火IM的能力集成到Vue Electron项目。 前置说明 本项目所使用的是需要付费的,价格请参考费用详情 支持试用,具体请看试用说明 本项目默认只能连接到官方服务,购买或申请试用之后,替换,即可连到自行部署的服务 分支说明 :基于开发,是未来的开发重心 :基于开发,进入维护模式,不再开发新功能,鉴于已经终止支持且不再维护,建议客户升级到版本 环境依赖 mac系统 最新版本的Xcode nodejs v18.19.0 npm v10.2.3 python 2.7.x git npm install -g node-gyp@8.3.0 windows系统 nodejs v18.19.0 python 2.7.x git npm 6.14.15 npm install --global --vs2019 --production windows-build-tools 本步安装windows开发环境的安装内容较多,如果网络情况不好可能需要等较长时间,选择早上网络较好时安装是个好的选择 或参考手动安装 windows-build-tools进行安装 npm install -g node-gyp@8.3.0 linux系统 nodej...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值