• enum,sizeof,typedef


    枚举类型的使用方法

    • enum是C语言中的一种自定义类型
    • enum值可以根据需要自定义整形值
    • 第一个定义的enum值默认为0
    • 默认情况下的enum值是在前一个定义值得基础上加1
    • enum类型的变量只能去定义时的离散值

    例子1:enum的使用

    #include<stdio.h>
    
    int main()
    {
        enum Color
        {
            GREEN,
            RED = 2,
            BLUE
        };
        enum Color c = GREEN;
        printf("c = %d
    ",c); // 0
        c = BLUE;
        printf("c = %d
    ",c); // 3
        return 0;
    }
    
    

    枚举类型的特殊含义

    enum中定义的值是C语言中真正意义上的常量,在工程中enum多用于定义整形常量

    例子2:enum的使用

    #include<stdio.h>
    
    int main()
    {
        enum
        {
            ARRAY_SIZE =10
        };
        int array[ARRAY_SIZE] = {0};
        int i = 0;
        for(i=0;i<ARRAY_SIZE;i++)
            array[i] = i + 1;
        for(i=0;i<ARRAY_SIZE;i++)
            printf("array[i] = %d
    ",array[i]);
        return 0;
    }
    

    sizeof关键字

    • sizeof是编译器的内置指示符
    • sizeof用于计算类型或变量所占用内存大小
    • sizeof的值在编译期就已经确定

    注意:

    • sizeof是C语言的内置关键字而不是函数
    • 在编译过程中所有的sizeof将被具体的数值所替换
    • 程序的执行过程与sizeof没有任何关系

    例子3:sizeof的本质

    #include<stdio.h>
    
    int main()
    {
        int var = 0;
        int num = sizeof(var++);
        printf("var = %d,num = %d
    ",var,num); //0 4
        return 0;
    }
    

    typedef的意义

    如果面试官问typedef的具体的意义,你怎么回答?
    如果回答typedef用于定义一种新的类型。 X

    typedef用于给一个已经存在的数据类型起个别名,typedef本质上不能产生新的类型

    typedef重命名的类型:

    • 可以在typedef语句之后定义
    • 不能被unsigned和signed修饰

    用法:

    typedef type new_name;

    例子4:typedef例子

    #include<stdio.h>
    typedef int Int32;
    struct _tag_point
    {
        int x;
        int y;
    };
    typedef struct _tag_point Point;
    typedef struct
    {
        int len;
        int array[];
    }SoftArray;
    
    typedef struct _tag_list_node ListNode;
    struct _tag_list_node
    {
        ListNode* next;
    };
    
    int main()
    {
        Int32 i = -100;
        // unsigned Int32 ii= 0;
        Point p;
        SoftArray* sa = NULL;
        ListNode* node = NULL;
    
        return 0;
    }
    
    

    小结

    • enum用于定义离散值类型
    • enum定义的值是真正意义上的常量
    • sizeof是编译器的内置指示符
    • sizeof不参与程序的执行过程
    • typedef用于给类型起一个别名,别名的类型可以在typedef语句之后定义
  • 相关阅读:
    洛谷 P4318 完全平方数 二分+容斥
    洛谷 P4899 [IOI2018] werewolf 狼人 克鲁斯卡尔重构树+主席树
    洛谷 P3997 [SHOI2013]扇形面积并 线段树
    洛谷 P3268 [JLOI2016]圆的异或并 扫描线
    OI有关 学习网站
    Linux命令基础——stat-readdir-dup2
    Linux命令基础——makefile+gdb+IO
    Linux命令基础——vim+gcc+ibrary
    Linux命令基础——常用命令
    MFC学习笔记——07-MFC_20day
  • 原文地址:https://www.cnblogs.com/yanyun888/p/9150311.html
Copyright © 2020-2023  润新知