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\n",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)\n", c);
            break;
        case GREEN:
            printf("Color: GREEN (0x%08X)\n", c);
            break;
        case BLUE:
            printf("Color: BLUE(0x%08X)\n", 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\n", 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!\n");
    return 0;
}
int main()
{
    int var = 0;
    int size = sizeof(var++); //該行在編譯期被替換為 int size =4;
    //所以運行時,不存在 var++之類的代碼了
    printf("var = %d, size = %d\n", var, size);
    size = sizeof(f()); //該行在編譯期被替換為 size = sizeof(函數的返回值類型) =4;
    //即最終代碼沒有 f()函數的調用,也就不會輸出 f()里面的 printf
    printf("size = %d\n", size);
    return 0;
}

 

 

 

參考資料:
www.dt4sw.com
http://www.cnblogs.com/5iedu/category/804081.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM