结构体—动态内存分配

动态内存分配

#include<stdlib.h>   引入库函数  用于mallocfree等函数

STU *stu;

stu=(STU*)malloc( 5 * sizeof(STU) ) ;

if(stu == NULL) {  printf(" 内存分配失败\n");   return 1; }

指针变量分配内存空间

和 数组分配内存差不多  调用方式一样------可用p[i]  *(p+i) 值   &p[i]....

学生结构体写题思路

1.定义宏

2.划分功能模块

3.main()调用实现

4.函数实现

注意:若较简单可  先写函数

n个学生信息(学号 姓名 成绩) 要求按照成绩高低输出  (动态内存分配)

#include<stdio.h>
#include<stdlib.h>
#define N 5
typedef struct
{
	long no;
	char name[10];
	float score;

}STU;
int main()
{
	STU* stu;   //结构体指针
	stu = (STU*)malloc(sizeof(STU) * N);
	if (stu == NULL)   //判断内存分配是否成功
	{
		printf("分配空间失败");
		return 1;
	}
		
	int i, j, k;
	for (i = 0; i < N; i++)
	{
		scanf("%ld%s%f", &stu[i].no, stu[i].name, &stu[i].score);
	}
	//降序
	for (i = 0; i < N - 1; i++)
	{
		k = i;
		for (j = i + 1; j < N; j++)
		{
			if (stu[k].score < stu[j].score)k = j;
		}
		if (k != i) { STU t = stu[k]; stu[k] = stu[i]; stu[i] = t; } //交换结构体变量
	}
	//输出
	for (i = 0; i < N; i++)
		printf("%ld  %s  %f\n", stu[i].no, stu[i].name, stu[i].score);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值