动态数组笔记

博客开头先提到一点:由于我异常的弱 ,所以这个部分更倾向于实用而不是介绍理论。
来让我们从动态数组的第一个函数开始:
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;

weixin151云匹面粉直供微信小程序+springboot后端毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值