1.枚举
枚举类型:C语言提供了一种类型,这种类型的变量的取值被限定在一定范围内。
枚举类型的定义:enum 枚举类型名{ 枚举值1,枚举值2,……};
枚举类型变量的定义
1)先定义枚举类型,再定义枚举变量
2)定义枚举的同时,定义变量
枚举变量的值
枚举类型定义完成以后,系统会自动给枚举的每个元素都赋一个从0开始的整形的初值,也可以手动赋值。
使用举例:
#include <stdio.h>
//定义一个枚举类型,保存星期几
enum weekday{
Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, sunday
};
int main(int argc, const char * argv[]) {
// 1.枚举类型变量的定义
enum weekday day1; // 先定义枚举类型,再定义枚举变量,day1的取值是有范围的,必须为枚举类型weekday中枚举值列表中的一个
enum Sex{sexMan, sexWoman} isex; // 定义枚举的同时定义变量
// 2.枚举类型变量的初始化
day1 = Monday;
isex = sexMan;
// 3.枚举变量的使用
printf("%d\n", day1);
// 4.枚举变量的应用
struct Person {
char *name;
enum Sex isex; // 性别只能从sexMan和sexWoman中选择
};
return 0;
}
typedef作用:用于为数据类型取“别名”。
typedef定义形式: typedef 原类型名 新类型名; // 其中原类型名含有定义部分,新类型名一般用大写表示,以便于区别。
使用举例:
#include <stdio.h>
int sum(int a, int b){
return a + b;
}
int main(int argc, const char * argv[]) {
// 1.给基本数据类型起别名
typedef int DOUBLE;
// 2.给数组起别名
typedef DOUBLE ARRAY[3];
ARRAY a1 = {1,2,3}; // int a1[3] = {1,2,3};
printf("%d %d %d\n", a1[0], a1[1], a1[2]);
// 3.给结构体起别名
struct Student{
int age;
char *name;
};
typedef struct Student STU;
STU stu1 = {13,"lucy"};
printf("%d %s\n",stu1.age, stu1.name );
typedef struct {
int wheels;
int speed;
} CAR;
CAR c1 = {4,180};
printf("%d %d\n",c1.wheels, c1.speed);
// 4.给枚举类型起别名(与结构体方法相同)
typedef enum Sex{
man,
woman
} SEX;
SEX isex = man;
printf("%d \n",isex);
// 5.给函数指针起别名
typedef int (*P)(int, int); // P是一个别名
P f1 = sum;
printf("%d", f1(23,34));
return 0;
}