建立动态数组,输入5个学生的,另外用一个函数检查其中有无低于60分的,输出不合格的成绩。

该文介绍了C语言中内存动态分配的概念,通过一个实例展示了如何使用malloc函数创建动态数组来存储5个学生成绩,并使用指针处理这些数据。文章还包含了检查不及格成绩的函数check,阐述了动态内存分配在提高程序灵活性和内存利用率方面的优势。
摘要由CSDN通过智能技术生成

题为c程序设计(第五版)谭浩强  例8.30


前言

        这篇博客,让我们一起来学习内存的动态分配。

        那么,什么是内存的动态分配呢?C语言允许建立内存动态分配区域,以存取一些临时用的数据,这些数据不必在程序的声明部分定义,也不必等到函数结束时才释放,而是需要时随时开辟,不需要时随时释放。这些数据是临时存放在一个特别的自由存储区,称为堆区。可以根据需要,向系统申请所需大小的空间。由于未在声明部分定义它们为变量或数组,因此不能通过变量名或数组名去引用这些数据,只能通过指针来引用。


一、题目复现

二、实现步骤

1.思路分析

        1.使用malloc函数开辟一个动态自由区域,用来存放5个学生的成绩,会得到这个动态域第1个字节的地址,它的基类型是void型。

        2.用一个基类型为int的指针变量p来指向动态数组的各元素,并输出它们的值。但是必须先把malloc函数返回的void指针转换为整形指针,然后赋给p1。

2.具体实现

代码如下(示例):

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>			//程序中用了malloc函数,应包含stdlib.h
int main()
{
	void check(int*);		//函数声明
	int* p1, i;				//p1是int型指针
	p1 = (int*)malloc(5 * sizeof(int));		//开辟动态内存区,将地址转换成int*型,然后放在p1中
	for (i = 0; i < 5; i++)
		scanf("%d", p1 + i);				//输入5个学生的成绩
	check(p1);								//调用check函数
	return 0;

}

void check(int* p)				//定义check函数,形参是int*指针
{
	int i;
	printf("They are fail:");
	for (i = 0; i < 5; i++)
	{
		if (p[i] < 60)
			printf("%d\t", p[i]);		//输出不合格的成绩
	}
	printf("\n");
}

实验结果(示例):


总结

        内存的动态分配能够更充分的利用计算机的内存空间,并且更好的发挥了c语言的灵活性。在实际应用中,内存的动态分配主要应用于建立程序中的动态数据结构(如链表)中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fashia

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值