最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言詳細(xì)分析講解關(guān)鍵字enum與sizeof及typedef的用法

 更新時(shí)間:2022年04月20日 17:05:41   作者:清風(fēng)自在?流水潺潺  
在?C?語言中經(jīng)常會(huì)見到?enum、sizeof、typedef,那么我們今天就來講解下它們?nèi)齻€(gè),enum是C語言中的一種自定義類型,它是一種枚舉類型,sizeof是編譯器的內(nèi)置指示符,用于計(jì)算類型或變量所占內(nèi)存打小,typedef用于給一個(gè)已經(jīng)存在的數(shù)據(jù)類型重命名,本質(zhì)上不能產(chǎn)生新的類型

一、枚舉類型的使用方法

  • enum 是 C 語言中的一種自定義類型
  • enum 值是可以根據(jù)需要自定義的整型值
  • 第一個(gè)定義的 enum 值默認(rèn)為 0
  • 默認(rèn)情況下的 enum 值是在前一個(gè)定義值的基礎(chǔ)上加 1
  • enum 類型的變量只能取定義時(shí)的離散值
  • enum 中定義的值是C語言中真正意義上的常量
  • 在工程中 enum 多用于定義整型常量

下面看一段 enum 的使用代碼吧:

#include<stdio.h>
 
enum
{
    ARRAY_SIZE = 10
};
 
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;
    
    int array[ARRAY_SIZE] = {0};
    
    PrintColor(c);
    
    InitArray(array);
    
    PrintArray(array);
    
    return 0;
}

下面為輸出結(jié)果:

這段程序說明enum 中定義的值是C語言中真正意義上的常量。

二、sizeof 關(guān)鍵字的用法

  • sizeof 是編譯器的內(nèi)置指示符
  • sizeof 用于計(jì)算類型或變量所占的內(nèi)存大小
  • sizeof 的值在編譯期就已經(jīng)確定

sizeof 可以采用以下的用法:

sizeof 是 C 語言的內(nèi)置關(guān)鍵字而不是函數(shù)

  • 在編譯過程中所有的 sizeof 將被具體的數(shù)值所替換
  • 程序的執(zhí)行過程與 sizeof 沒有任何關(guān)系

下面看一段 sizeof 的本質(zhì)的代碼:

#include<stdio.h>
 
int f()
{
    printf("Autumn Ze");
    
    return 0;
}
 
int main()
{
    int var = 0;
    
    int size = sizeof(var++);
    
    printf("var = %d, size = %d\n", var, size);
    
    size = sizeof(f());
    
    printf("size = %d\n", size);
    
    return 0;
}

下面為輸出結(jié)果:

為什么 var 不等于 1 呢?這是因?yàn)樵诰幾g過程中所有的 sizeof 將被具體的數(shù)值所替換,var++ 這條語句根本得不到執(zhí)行。同樣,f() 函數(shù)也不會(huì)得到執(zhí)行,所以不會(huì)輸出 Autumn Ze,只會(huì)輸出返回值類型 int 的字節(jié)數(shù)。

三、typedef 的意義

typedef 用于給一個(gè)已經(jīng)存在的數(shù)據(jù)類型重命名

typedef 本質(zhì)上不能產(chǎn)生新的類型

typedef 重命名的類型:

  • 可以在 typedef 語句之后定義
  • 不能被 unsigned 和 signed 修飾

用法:typedef type new_name;

下面看一段 typedef 使用的代碼:

#include<stdio.h>
 
typedef int Int32;
 
struct _tag_point
{
    int x;
    int y;
};
 
typedef struct _tag_point Point;
 
typedef struct
{
    int length;
    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;
}

這段代碼主要就是說明typedef 重命名的類型可以在 typedef 語句之后定義,不能被 unsigned 和 signed 修飾。

四、小結(jié)

  • enum 用于定義離散值類型
  • enum 定義的值是真正意義上的常量
  • sizeof 是編譯器的內(nèi)置指示符
  • sizeof 不參與程序的執(zhí)行過程
  • typedef 用于給類型重命名
  • 重名的類型可以在 typedef 語句之后定義

到此這篇關(guān)于C語言詳細(xì)分析講解關(guān)鍵字enum與sizeof及typedef的用法的文章就介紹到這了,更多相關(guān)C語言 enum sizeof typedef內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++左值和右值學(xué)習(xí)筆記

    C++左值和右值學(xué)習(xí)筆記

    這篇文章主要為大家介紹了C++左值和右值學(xué)習(xí)筆記的重點(diǎn)講解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10
  • Windows進(jìn)程崩潰問題的定位方法

    Windows進(jìn)程崩潰問題的定位方法

    這篇文章主要介紹了Windows進(jìn)程崩潰問題的定位方法,本文使用nstd工具進(jìn)行進(jìn)程崩潰時(shí)內(nèi)存和堆棧轉(zhuǎn)儲的方法查明問題所在,需要的朋友可以參考下
    2015-04-04
  • Linux?C/C++實(shí)現(xiàn)網(wǎng)絡(luò)流量分析工具

    Linux?C/C++實(shí)現(xiàn)網(wǎng)絡(luò)流量分析工具

    網(wǎng)絡(luò)流量分析的原理基于對數(shù)據(jù)包的捕獲、解析和統(tǒng)計(jì)分析,通過對網(wǎng)絡(luò)流量的細(xì)致觀察和分析,幫助管理員了解和優(yōu)化網(wǎng)絡(luò)的性能,本文將通過C++實(shí)現(xiàn)網(wǎng)絡(luò)流量分析工具,有需要的可以參考下
    2023-10-10
  • C++中const的實(shí)現(xiàn)機(jī)制深入分析

    C++中const的實(shí)現(xiàn)機(jī)制深入分析

    C語言以及C++語言中的const究竟表示什么?其具體的實(shí)現(xiàn)機(jī)制又是如何實(shí)現(xiàn)的呢?本文將對這兩個(gè)問題進(jìn)行一些分析,需要了解的朋友可以參考下
    2012-12-12
  • C++11中可變模板參數(shù)的實(shí)現(xiàn)

    C++11中可變模板參數(shù)的實(shí)現(xiàn)

    C++11的可變參數(shù)模板允許創(chuàng)建可以接受可變參數(shù)的函數(shù)和類模板,通過遞歸展開參數(shù)包來處理每個(gè)參數(shù),下面就來介紹一下,感興趣的可以了解一下
    2024-12-12
  • C語言系統(tǒng)日期和時(shí)間實(shí)例詳解

    C語言系統(tǒng)日期和時(shí)間實(shí)例詳解

    我們在寫C語言程序的時(shí)候,有的時(shí)候會(huì)用到讀取本機(jī)的時(shí)間和日期,下面這篇文章主要給大家介紹了關(guān)于C語言系統(tǒng)日期和時(shí)間的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-06-06
  • C++ 淺談emplace_back及使用誤區(qū)

    C++ 淺談emplace_back及使用誤區(qū)

    這篇文章主要介紹了C++ 淺談emplace_back及使用誤區(qū),具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • C語言實(shí)現(xiàn)無頭單向鏈表的示例代碼

    C語言實(shí)現(xiàn)無頭單向鏈表的示例代碼

    本文主要介紹了C語言實(shí)現(xiàn)無頭單向鏈表的示例代碼,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • C++實(shí)現(xiàn)LeetCode(169.求大多數(shù))

    C++實(shí)現(xiàn)LeetCode(169.求大多數(shù))

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(169.求大多數(shù)),本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • C語言實(shí)現(xiàn)一個(gè)簡單的掃雷游戲

    C語言實(shí)現(xiàn)一個(gè)簡單的掃雷游戲

    掃雷是電腦上很經(jīng)典的游戲,特意去網(wǎng)上玩了一會(huì),幾次調(diào)試之后,發(fā)現(xiàn)這個(gè)比三子棋要復(fù)雜一些,尤其是空白展開算法上和堵截玩家有的一拼,與實(shí)際游戲差別較大,不能使用光標(biāo),下面來詳解每一步分析
    2021-10-10

最新評論

新安县| 林州市| 西宁市| 永泰县| 漠河县| 清丰县| 江源县| 新龙县| 门源| 八宿县| 南康市| 舟山市| 留坝县| 炎陵县| 华亭县| 哈密市| 静海县| 临汾市| 成安县| 博乐市| 唐山市| 马关县| 贡山| 宿迁市| 多伦县| 时尚| 巍山| 梁河县| 咸阳市| 汉阴县| 永春县| 隆化县| 武功县| 中牟县| 曲阳县| 龙山县| 浦江县| 锦屏县| 卓资县| 屏南县| 石屏县|