关键字--enum和typedef
enum即枚举。
枚举的用法如下:
1、成员没有赋值
enum test
{
A,
B,
C,
D,
E
};
如果枚举的成员都没有赋值,它们的数值就默认从0开始依次递增1.如上A=1,B=2,C=3...
2、成员有赋值
enum test
{
A=2,
B,
C,
D=10,
E
};
如果枚举的成员有赋值,则未赋值的成员就从被赋值的成员数值依次递增1,如上A=2,B=3,C=4,D=10,E=11.
*注意:
1、枚举的成员都是常量,不能被重新赋值。试图在代码中使用‘A=5;’来修改A的数值是错误的。
2、枚举的成员只能被赋以整数(可以为负数),不能赋以浮点数等其他类型数值。
typedef:
typedef的作用是给已知的数据类型起一个别名。
例如:
typedef unsigned int uint32_t;
typedef struct student
{
int id;
char name[20];
unsigned int age;
} STU;
上面的'uint32_t a;'等效为 'unsigned int a;',同理'STU m;'等效为‘struct student m;’
利用typedef关键字可以提高代码的可移植性。
typedef与#define的区别:
1、顺序的差别
typedef关键字中用户定义的‘代号’在后面,而#define宏替换中用户定义的‘代号’在前面。
2、含义的差别
#define宏替换只是编译器在预编译时简单的进行代码的替换;typedef是定义一种数据类型。
通过一个例子来对比:
#define PCHAR char *
PCHAR a,b;
//等效为char * a,b; a是一个char型指针,b是char型变量
typedef char * PCHAR;
PCHAR a,b;
//等效为char *a, *b; a和b都是char型指针