黑马程序员----C 语言学习笔记之枚举类型和typedef关键字

------Java培训、Android培训、iOS培训、.Net培训--------

一、枚举类型介绍及定义

在实际问题中有许多可能出现的属性有固定的值,例如一年的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
    };//这样就可以有效的杜绝此问题

二、 typedef 关键字介绍

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;
}

 


你可能感兴趣的:(c语言基础)