在c语言中结构体,联合,枚举是常用的方法。而关于它们的区别与使用有以下几点
一、结构体
对于各种基本类型(如整型、实型、字符型),在解决一些复杂的实际问题时,只使用它们是不够的。因此要使用结构体这一类型。
定义:如果某个数据节点包含多个类型,我们可以通过一个语法结构,即结构体,将这些数据类型包在一起,构成一个类型类型来操作
例如
#include <stdio.h>
struct node
{
char name[20];
int age;
double score;
};
此时struct为关键字 node为名字
但在访问时,一般变量用. 而指针变量用-> 称为取成员符
struct node nd=("小明",23,98.5);
printf("%s %d %lf",nd.name,nd.age,nd.score);
printf("%s %d %lf",nd->name,nd->age,nd->score);
二、联合
定义:联合也是一种特殊的自定义类型,特征是这些成员共用一块空间,它们的起始地址都一样
union UN
{
int a;
short s;
char c;
};
但修改一个成员后,其他成员也会变化 数值在可表示范围内,正常表示;数值在不可表示范围内,存余数
三、枚举
定义:enum,一组有名字的int类型的数据类型
如:enum color {red,yellow,blue,black,white};
定义了一个整型类型,该整型有6个数据,默认0~x-1,分别是各自名字
red yellow blue black white
0 1 2 3 4
枚举的运用在日常编程中运用很多,如:在贪吃蛇小游戏中的方向判断
enum DIR{east,south,west,north} dir;
if(east==dir){}
else if(south==dir){}
else if(west==dir){}
else if(north==dir){}
此时使用名字就不需要用{0,1,2,3}来代表“东西南北”的方向
虽然也使用#define定义常量来实现,但使用枚举可以增加代码的可读性与可维护性
希望以上解读对读者们有所帮助,感谢阅读。