黑马程序员——c语言基础:枚举和typedef

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; // 性别只能从sexMansexWoman中选择

    };

    return 0;

}



2.typedef

 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;

}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值