今天我们要学的新知识是结构体,相信大家都没有忘记我们期末时C语言项目实践要我们做的一个小游戏,我做的是贪吃蛇,里面就用上了结构体。我会在最后面带上我们小组写的贪吃蛇代码,让大家看看结构体在一个项目中如何真正实践。

结构体的诞生:因为在游戏中(这里我将使用大家比较熟悉的一款游戏王者荣耀为例子,因为王者荣耀使用的是C++进行开发的,同源)的一个角色的数据类型十分复杂,比如我曾经打到深圳市33名的一个角色干将莫邪(小小臭屁一下hhh),它本身包含了名字,生命,物攻,法强,物抗,法抗,法术吸血等等。角色本身的建模那与我们没有关系。我们如果要在代码中实现,是不是要定义一个char(字符串)来装名字,定义五个int来装生命,物攻,法强,定义一个浮点型来装法术吸血。一个游戏有很多个角色,我们之前所学的数组什么的只能用来装同一类型的数据,单独定义又很麻烦,还要自己去记住各个变量本身对应的量是哪个。因此结构体的出现就因为人们的需求出现啦

代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>

struct Stu/*定义一个结构体*/
{
char name[10];//姓名
int shengming;//生命值
int wugong;//物攻
int faqian;//法强
float fashuxixue;//法术吸血
};
int main()
{
return 0;
}

现在你就已经定义完了一个结构体,那接下来就是要把它用上,这里我来为大家展示一下干将莫邪的定义。上代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include <stdio.h>

struct Stu/*定义一个结构体*/
{
int shengming;//生命值
int wugong;//物攻
int faqian;//法强
float fashuxixue;//法术吸血
};
//结构体也可以嵌套
struct Birthday {
int year;
int month;
int day;
};
struct Student {
char name[30];
int num;
float score;
struct Birthday birthday;//访问出生年份
}stu1;

//结构体的初始化也可以育定义同时,这样子就不用进行强制转换
struct Studen {
char name[20];
int num;
float score;
}stu = { "Mike",15,98.9 };
/*有意思的是你也可以用一个结构体完整复刻另一个结构体*/
int main()
{
struct Stu ganjiangmoye = { 10000,0,500,23.4 };//简单定义
stu1 =(struct Student) {"luozifeng",19,98.3 };/*此处要用到强制转换,因为数组也是这样子赋值的,不这样做系统无法区分*/
struct Studen stu3;//完整复刻
//记住两结构体内部成员类型必须一致
stu3 = stu;
printf("stu.name:%s\tstu3.name:%s\n",stu.name, stu3.name);
printf("stu.num:%d\tstu3.num:%d\n", stu.num, stu3.num);
printf("stu.score:%lf\tstu3.score:%lf\n", stu.score, stu3.score);

return 0;
}
更新于

请我喝[茶]~( ̄▽ ̄)~*

罗梓丰 微信支付

微信支付

罗梓丰 支付宝

支付宝