一、枚举类型介绍及定义
在实际问题中有许多可能出现的属性有固定的值,例如一年的12个月,十二生肖,一年四季等等。
因此C语言中提供了一种称为“枚举”的类型,在“枚举”的定义中列举出所有可能的值,说明该“枚举”类型的变量取值不能超过定义的范围
【注意】枚举类型是一种基本数据类型,而不是一种构造类型,因为它已经不能再分解为任何其他基本类型。
1.枚举类型
枚举类型定义的一般形式为:
enum 枚举类型名{元素1,元素2,.....};
例如:
#include
//定义一个枚举类型
enum season{
Spring,//枚举型中每个元素都是有整型的值,默认的第一个值是0,其后每个元素的值是上一个元素的值加上1
Summer = 6,//枚举型会自动给每个元素赋初值,也可以改变默认的初值
Autumn,
Winter
};
int main(int argc, const char * argv[])
{
printf("Spring is %d season\n", Spring);
printf("Summer is %d season\n", Summer);
printf("Autumn is %d season\n", Autumn);
printf("Winter is %d season", Winter);
return 0;
}
2、应用
char sex = 'F';//性别只有两种,如果直接用字符的话,有可能会导致随意赋值,使该变量意义模糊。此时就可以使用枚举类型
enum sex{
male,
female
};//这样就可以有效的杜绝此问题
1.概念及语法格式
C语言不仅提供了丰富的数据类型,而且允许用户自定义类型说明符,也就是说允许由用户位数据类型取【别名】。
typedef定义的一般形式为:
typedef 元类型名 新类型名;
一种原类型名中含有定义部分,新类型名一般用大写表示,以便于区分。
例如:
typedef intAMOS;//取别名后,与原来型无区别
AMOS sum = 1000;
printf("sum = %d", sum);
打印结果:
sum = 1000
2.typedef的使用方法
直接上代码:
#include
//定义一个结构体
struct Student{
int num;
char *name;
int age;
};
int add(int a, int b){
return a + b;
}
int main(int argc, const char * argv[])
{
//1.用在基本类型
typedef int AMOS;
AMOS a = 4;
printf("a = %d\n", a);
//2.用在数组
typedef int ARRAY[5];
ARRAY b = {1,2,3,4,5};//相当于int b[5] = {1,2,3,4,5};
printf("数组b的元素:");
for (int i = 0; i < 5; i++) {
printf("%d ", b[i]);
}
//3.用在结构体,用法一
typedef struct Student STUDENT;
STUDENT stu;
stu.num = 1;
stu.name = "Amos";
stu.age = 24;
printf("\n结构体\nnumber: %d, name: %s,age:%d",stu.num,stu.name,stu.age);
//用在结构体,用法二
typedef struct {//此处的结构体名可以不写
int hour;
int minitue;
int second;
} Time;
Time time = {12, 50, 20};
printf("\ntime is: %0d:%0d:%0d\n",time.hour,time.minitue,time.second);
//4.用在枚举类型
typedef enum{Spring,Summer,Autumn,Winter} Season;//枚举名也可省略
Season mySeason = Spring;
printf("Spring's value is : %d\n", mySeason);
//5.用在函数指针
//先定义一个函数指针
int (*p)(int, int);
//给该函数指针定义别名
typedef int (*FUN)(int, int);
FUN f1 ,f2;
f1 = add;
int sum = f1(1,2);
printf("f1(1,2) = %d\n",sum);
return 0;
}