C语言中一些类型的变量的定义和使用

作者:李大闯

本文希望向读者讲解以下三个问题:
一、在C语言中如何定义一个枚举类型并使用?

二、在C语言中如何定义一个结构体类型并使用?


一、在C语言中如何定义一个枚举类型并使用?
以一周中的七天为例,定义一个枚举型变量:
enum WEEK_TYPE
{
SUNDAY,
MONDAY,
TUESDAY,
WEDNESDAY,
THURSDAY,
FRIDAY,
SATURDAY,
};
请注意,枚举中多个元素之间是以逗号相隔开,而不是分号。
需要说明的是,枚举中这些元素其实都是以常量的形式存在的,如果没有人为标注,则第一个元素值为0,后面依次增加1,MONDAY为1,依次类推。
如果枚举中定义的常量的值并不连贯,或起始不是0,则可以人为去设置元素的值,例如:
enum WEEK_TYPE2
{
SUNDAY,
MONDAY,
TUESDAY = 3,
WEDNESDAY,
THURSDAY,
FRIDAY,
SATURDAY,
};
这样修改之后, TUESDAY的值由原来的2变成了3,后面的元素则在现在TUESDAY 的基础上递增,WEDNESDAY变为4,依次类推;

可以看出上述语句跟define进行的宏定义效果一致:
#define SUNDAY 0
#define MONDAY 1
……
只是不需要一一去指定,更加清晰。

定义之后,如何使用呢?
例如我定义一个全局变量星期:
int week;
则可以给week变量用上述枚举的元素赋值:
week = SUNDAY;
也可以在switch语句中用枚举元素进行判断:
switch(week)
{
case SUNDAY:
......
break;
case MONDAY :
......
break;
......
}
这样的话,在使用的时候就没有那么多直接的常量,后期如果某个元素的值变动,只改一处即可,非常方便。

二、在C语言中如何定义一个结构体类型并使用?
以学生信息举例说明,可以写成下面的形式:
struct student
{
  int num;
  char name[20];
  char sex;
  float score;
};
也可以用下面的形式:
typedef  struct
{
  int num;
  char name[20];
  char sex;
  float score;
}STUDENT_TYPE;
请注意元素之间的以分号分开,而不是逗号。
根据以上两种形式,定义变量的方法也有两种:
struct student stu1;
STUDENT_TYPE stu2;

在实际使用时,一般是对结构体中具体的元素进行操作,如
stu1.score = 95.5;

也可以用内存拷贝的方式,用同一个结构体类型变量给另一个变量赋值,如:
memcpy(&stu1,&stu2,sizeof(stu1));

你可能感兴趣的:(单片机,C语言,struct,enum,结构体,枚举)