c语言中结构体什么时候用->,c语言之初识结构体|时刻需 | 时刻需

c语言的结构体类似于数组,是很重要且实用的一种数据表达方法

不多说了直接上例子:(来源 网易课堂 老九君指导)

Hero.h

#ifndef HERO_H_INCLUDED

#define HERO_H_INCLUDED

#include

#include

//结构体:英雄、职业、英雄能力、时间

typedef struct _job //宏定义一个变量

{

int id;

char * name; //职业名称

char * desc; //职业描述

}Job;

typedef struct _Abillity

{

int id;

char * name;//特殊能力名称

char * intro; //特殊能力说明

}Abillity;

typedef struct _putTime

{

int year;

int month;

int day;

}PubTime;

typedef struct _hero

{

int id;

char * name;//英雄名称

//int sex; //性别

char sex;

Job job;//职业

double hp;//生命值

double speed; //攻击速度

Abillity abillity;//特殊能力

PubTime pubTime;//上线时间

}Hero;

//用来输入英雄的值

void InputHero();

//用来输出英雄

void ShowHero();

#endif // HERO_H_INCLUDED

Hero.h

#include "Hero.h"

Hero heros[5];

Job jobs[] = {

{1,"法师","火球术"},

{2,"刺客","暗影杰"},

{3,"战士","奥拉夫"},

{4,"枪炮师","大枪"},

{5,"术士","巫术"},

};

void InputHero(){

//动态录入

/*int id;

char * name;//英雄名称

char sex; //性别

Job job;//职业

double hp;//生命值

double speed; //攻击速度

Abillity abillity;//特殊能力

PubTime pubTime;//上线时间*/

int jobChoice;

int i;

for(i = 0;i < 1; i++){

printf("请输入第%d位英雄的信息:\n",i+1);

heros[i].id = i+1;

printf("名称:");

heros[i].name = (char*)malloc(50);

scanf("%s",heros[i].name);

fflush(stdin);//录入字符后清空缓冲区

printf("性别:");

// scanf("%d",&heros[i].sex);

scanf("%c",&heros[i].sex);

fflush(stdin);//录入字符后清空缓冲区

// 设定职业数组 让用户选择

int j;

for(j=0;j<5;j++){

printf("%s\n",jobs[j].name);

}

printf("请选择职业:(1-5之间的整数)");

scanf("%d",&jobChoice);

heros[i].job = jobs[jobChoice -1];

printf("%s当前的职业:《%s》\n",heros[i].name,heros[i].job.name);

}

}

void ShowHero(){

}

main.c

#include

#include

#include "Hero.h"

int main()

{

/*char sex;

scanf("%c",&sex);

printf("%c",sex);*/

InputHero();

return 0;

}

重要说明

(char*)malloc(50) 随机定义内存大小

scanf("%s",heros[i].name);后要跟 fflush(stdin); 不然会报错的呢

这里只是简单的声明结构体,笔记会一直更新中

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值