什么叫结构体?

背景知识

我们使用指针在日常编写小程序时一个一个定义变量时不会发现什么问题,但是在实际场景中,比如在游戏中,我们要定义100个怪物,每一个怪物有7、8个属性,那么如果要一个个定义的话,就要定义700-800个变量,这样工作量就很大。

于是我们就想到了另外一种办法,叫做结构体struct的东西就出现了,结构体struct是将一个个小的属性整合到一个大的属性中,则使结构更加清晰、更加简单明了。

代码定义

我们定义一个叫做cxk的怪物,有着HP,MP,name的属性,通过 status 名称创建结构变量。直接通过cxk.属性就可以修改属性的值。

struct status
{
 int HP;
 int MP;
 char name;
}
status cxk
cxk.HP=100;
cxk.MP=100;

内存结构

变量名首地址
HP0XA0
MP0XA4
name0XA8

代码演示

#include<stdio.h>
struct extra
{
	int nothing;
};
struct skill//定义怪物的技能
{
	char a;
	float b;
	int num;
	extra wtf;//继续套娃
};

struct monster//存储怪物的基本属性
{
	int atk;
	long def;
	double hp;
	skill skl;//开始套娃
};

int main()
{
	monster cxk;
	cxk.hp = 1919810;
	cxk.atk = 2333;
	cxk.def = 213;
	cxk.skl.a = 'a';
	cxk.skl.wtf.nothing = 0;
	cxk.skl.num = 1212;
	cxk.skl.b = 12121212;

	printf("cxk.atk = %x , int \n", &cxk.atk);
	printf("cxk.def = %x , long \n", &cxk.def);
	printf("cxk.hp = %x , double \n", &cxk.hp);
	printf("cxk.skl.a = %x , char \n", &cxk.skl.a);
	printf("cxk.skl.b = %x , float \n", &cxk.skl.b);
	printf("cxk.skl.num = %x , int \n", &cxk.skl.num);
	getchar();
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值