欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

C之enum、sizeof、typedef(十一)-創(chuàng)新互聯(lián)

    在 C 語(yǔ)言中經(jīng)常會(huì)見(jiàn)到 enum、sizeof、typedef,那么我們今天就來(lái)講解下它們?nèi)齻€(gè)。

成都創(chuàng)新互聯(lián)服務(wù)項(xiàng)目包括平遙網(wǎng)站建設(shè)、平遙網(wǎng)站制作、平遙網(wǎng)頁(yè)制作以及平遙網(wǎng)絡(luò)營(yíng)銷策劃等。多年來(lái),我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,平遙網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到平遙省份的部分城市,未來(lái)相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

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

        下來(lái)我們就來(lái)寫(xiě)個(gè)示例代碼分析下,代碼如下:

#include <stdio.h>

enum
{
    ARRAY_SIZE = 5
};

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()
{    
    int array[ARRAY_SIZE] = {0};
    
    InitArray(array);
    
    PrintArray(array);
    
    return 0;
}

        我們來(lái)分析下這個(gè)代碼,它利用 enum 定義了常量 ARRAY_SIZE,然后創(chuàng)建數(shù)組并打印。我們來(lái)看下編譯結(jié)果是否如我們所愿呢?打印如下:

C之 enum、sizeof、typedef(十一)

       那么我們看到打印確實(shí)如我們所想。

        接下來(lái)我們來(lái)講講 sizeof 關(guān)鍵字,它是編譯器的內(nèi)置指示符,用于計(jì)算類型或變量所占內(nèi)存打小。那么它所計(jì)算的值在編譯期就已經(jīng)確定,也就是說(shuō)在運(yùn)行期是沒(méi)用的。sizeof 于類型時(shí):sizeof(type);用于變量時(shí):sizeof(var) 或 sizeof var。sizeof 是 C語(yǔ)言的內(nèi)置關(guān)鍵字而不是函數(shù),在編譯過(guò)程中所有的 sizeof 將被具體的數(shù)值所替換,程序的執(zhí)行過(guò)程與 sizeof 沒(méi)用任何關(guān)系。我們來(lái)看看 下面這個(gè)示例代碼會(huì)輸出什么?

#include <stdio.h>

int f()
{
    printf("hello world\n");
    
    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;
}

        我們先來(lái)分析下這個(gè)代碼,在程序的第14行我們做了 var++,理論上第16行打印出來(lái)的結(jié)果會(huì)是 1 和 4。在程序的第18行看似調(diào)用了 f() 函數(shù),那么照我們的分析,將會(huì)在第20行打印出 4,但是在前面硬打印出 hello world 這句話。下來(lái)我們來(lái)看看是否如我們所分析的那樣呢?

C之 enum、sizeof、typedef(十一)

        那么這是怎么回事呢?跟我們分析的不一樣,var 不等于 1,并且也沒(méi)有打印出 hello world 那句。我們來(lái)仔細(xì)想想上面講的 sizeof 的相關(guān)知識(shí),它是在程序的編譯期有效的,也就是說(shuō)程序運(yùn)行之后并沒(méi)有去執(zhí)行 var++,所以 var 仍然等于 0。sizeof 是關(guān)鍵字而不是函數(shù),所以在程序的第18行并不是去調(diào)用 f() 函數(shù),自然也就不會(huì)去執(zhí)行函數(shù)里的打印語(yǔ)句。因?yàn)楹瘮?shù)的返回值是 int 型,所以打印的值為 4。

        最后我們?cè)賮?lái)講講 typedef 關(guān)鍵字。我們通常以為 typedef 是定義一種新的類型,其實(shí)不是的。typedef 用于給一個(gè)已經(jīng)存在的數(shù)據(jù)類型重命名,其本質(zhì)上是不能產(chǎn)生新的類型的。注意:它命名的類型可以在 typedef 語(yǔ)句之后,但是不能被 unsigned 和 signed 所修飾。

        我們以示例代碼來(lái)分析下,代碼如下:

#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;
}

        我們來(lái)分析這個(gè)代碼,我們?cè)诘?9行顯然是先重命名后定義的,這種在 C 語(yǔ)言中是合法的。第28行用 unsigned 修飾重命名的類型,這顯然是錯(cuò)誤的,因此會(huì)在28行報(bào)錯(cuò)。第29行相當(dāng)于 struct  _tag_point p;第31行相當(dāng)于 struct _tag_list_node* node;我們來(lái)看看編譯結(jié)果

C之 enum、sizeof、typedef(十一)

        那么我們注釋掉第28行之后,編譯就通過(guò)了。那么我們今天講解了 enum、sizeof、typedef ,總結(jié)如下:1、enum 用于定義離散值類型,并且它定義的值是真正意義上的常量;2、sizeof 是編譯器的內(nèi)置指示符,不參與程序的執(zhí)行過(guò)程;3、typedef 用于給類型重命名,并且重命名的類型可以在 typedef 語(yǔ)句之后定義。后面我們會(huì)繼續(xù)對(duì) C 語(yǔ)言的學(xué)習(xí)。

         歡迎大家一起來(lái)學(xué)習(xí) C 語(yǔ)言,可以加我QQ:243343083。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

文章名稱:C之enum、sizeof、typedef(十一)-創(chuàng)新互聯(lián)
URL分享:http://www.chinadenli.net/article26/dciejg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營(yíng)銷型網(wǎng)站建設(shè)軟件開(kāi)發(fā)定制網(wǎng)站微信公眾號(hào)響應(yīng)式網(wǎng)站域名注冊(cè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設(shè)