动态分配数组×结构体

这个方法是我无意间尝试出来的,但我不是第一个发现的

        有时我们需要动态分配数据来创建一个能够自定义长度的数组,结构体又能够方便我们定义变量,那么它们是否能够结合起来呢?

        现在有一个情景,我们需要统计一群人的年龄和体重。

#include<stdio.h>
#include<stdlib.h>
int people_number;
struct people 
{
	int number;//号数 
	int age;//年龄 
	float weight;//体重 
};
int main()
{
	printf("输入人数:\n");
	scanf("%d",&people_number); 
    people* person=(people*)malloc(sizeof(people)*people_number);
    for (int i = 0; i < people_number; i++)
    {
		person[i].number=i;
		printf("输入年龄:\n");
		scanf("%d",&person[i].age);
		printf("输入体重:\n");
		scanf("%f",&person[i].weight);
	}
	for (int i = 0; i < people_number; i++)
    {
    	printf("号数:%d\n",person[i].number);
		printf("年龄:%d\n",person[i].age);
		printf("体重:%f\n",person[i].weight);
	}
	return 0;
}

头文件:

#include<stdio.h>
#include<stdlib.h>

定义人数变量:

int people_number;

定义结构体:

struct people 
{
	int number;//号数 
	int age;//年龄 
	float weight;//体重 
};

输入完变量people_number 的值之后,最重要的来了:

struct people* person=(struct people*)malloc(sizeof(struct people)*people_number);

其实就是把这个结构体当像 int 、float 的数据类型一样带入动态分配内存。其他的代码不过多赘述

编译后的输入与结果:

但是,有可能报错

出现“未声明的标识符”的报错,大家可以把代码改成这样子:

就是麻烦点,可能是我的头文件没有补齐

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值