zoukankan      html  css  js  c++  java
  • C语言学习笔记--enum和sizeof关键字

    1.enum关键字

    C语言中enum关键字用来定义枚举类型

    1enum C 语言中的一种自定义类型
    2enum 值是可以根据需要自定义的的整型值
    (3)第一个定义的 enum 值默认为 0

    (4)默认情况下的 enum 值是在前一个定义值的基础上加 1

    (5)enum 类型的变量只能取定义时的离散值

    enum Color
    {
        GREEN, //默认 GREEN==0;
        RED= 2, //自定义 RED==2;
        BLUE //默认情况,是在前一个的基础上加 1,即 BLUE==3
    };
    enumColor c =GREEN;//定义 c 变量,并初始化为 GREEN
    printf("%d
    ",c);

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

    #include <stdio.h>
    enum //无名枚举,用于定义常量
    {
        ARRAY_SIZE = 10 //定义数组大小,ARRAY_SIZE 是常量,运行时无
    法改变
    };
    enum Color
    {
        RED = 0x00FF0000,
        GREEN = 0x0000FF00,
        BLUE = 0x000000FF //注意,后面没分号
    };
    //打印,参数为枚举类型
    void PrintColor(enum Color c)
    {
        switch( c )
        {
            case RED:
                printf("Color: RED (0x%08X)
    ", c);
                break;
            case GREEN:
                printf("Color: GREEN (0x%08X)
    ", c);
                break;
            case BLUE:
                printf("Color: BLUE(0x%08X)
    ", c);
                break;
        }
    }
    //初始化数据
    void InitArray(int array[])
    {
        int i = 0;
        for(i=0; i<ARRAY_SIZE; i++)
        {
            array[i] = i + 1;
        }
    }
    void PrintArray(int array[])
    {
        int i = 0;for(i=0; i<ARRAY_SIZE; i++)
        {
            printf("%d
    ", array[i]);
        }
    }
    int main()
    {
        enum Color c = GREEN; //定义变量 c 并初始化为 GREEN
        int array[ARRAY_SIZE] = {0};
        PrintColor(c);
        InitArray(array);
        PrintArray(array);
        return 0;
    }

    2.C语言中的sizeof关键字

    1sizeof 是编译器的内置指示符
    2sizeof 用于计算类型或变量所占的内存大小

    3sizeof 的值在编译期就己经确定,在编译过程中所有的 sizeof 将被具体的数值所替换 ,程序的执行过程与 sizeof 没有任何关系 。

    #include <stdio.h>
    int f()
    {
        printf("I like programming!
    ");
        return 0;
    }
    int main()
    {
        int var = 0;
        int size = sizeof(var++); //该行在编译期被替换为 int size =4;
        //所以运行时,不存在 var++之类的代码了
        printf("var = %d, size = %d
    ", var, size);
        size = sizeof(f()); //该行在编译期被替换为 size = sizeof(函数的返回值类型) =4;
        //即最终代码没有 f()函数的调用,也就不会输出 f()里面的 printf
        printf("size = %d
    ", size);
        return 0;
    }

     

     

    参考资料:
    www.dt4sw.com
    http://www.cnblogs.com/5iedu/category/804081.html

  • 相关阅读:
    poj 1013 Counterfeit Dollar
    poj百练2973:Skew数 进制问题
    poj百练2972 进制问题
    poj2080 Calendar
    POJ 1928 The Peanuts
    EXCEL打开CSV文件乱码的解决方法
    希望博客园做个软件职业生存状态调查问卷
    Linq使用Group By [转]
    ADO.NET 从DataTable中获取某列含有的不同值的几种方式
    本该遭拒的十大科技专利:苹果滑动解锁上榜[转]
  • 原文地址:https://www.cnblogs.com/CoderTian/p/5898324.html
Copyright © 2011-2022 走看看