结构体,联合,枚举之间的区别与使用

172 阅读2分钟

在c语言中结构体,联合,枚举是常用的方法。而关于它们的区别与使用有以下几点

一、结构体

对于各种基本类型(如整型、实型、字符型),在解决一些复杂的实际问题时,只使用它们是不够的。因此要使用结构体这一类型。

定义:如果某个数据节点包含多个类型,我们可以通过一个语法结构,即结构体,将这些数据类型包在一起,构成一个类型类型来操作

例如

#include <stdio.h>
struct node
{
 char name[20];
 int age;
 double score;
};

此时struct为关键字 node为名字

但在访问时,一般变量用. 而指针变量用-> 称为取成员符

struct node nd=("小明"2398.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定义常量来实现,但使用枚举可以增加代码的可读性与可维护性

希望以上解读对读者们有所帮助,感谢阅读。