第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

全部開(kāi)發(fā)者教程

C 語(yǔ)言入門(mén)教程

C 語(yǔ)言基礎(chǔ)教程
01 C 語(yǔ)言簡(jiǎn)介 02 C 語(yǔ)言的程序結(jié)構(gòu) 03 C 語(yǔ)言的編譯 04 C 語(yǔ)言的標(biāo)準(zhǔn) 05 C 語(yǔ)言中的注釋 06 C 語(yǔ)言中的變量 07 C 語(yǔ)言中的變量類(lèi)型 08 C 語(yǔ)言的常量 09 C 語(yǔ)言的輸入與輸出 10 C 語(yǔ)言中的 printf() 格式輸出 11 C 語(yǔ)言中的類(lèi)型轉(zhuǎn)換 12 C 語(yǔ)言中的運(yùn)算符 13 C 語(yǔ)言中的算數(shù)運(yùn)算符 14 C 語(yǔ)言中的位運(yùn)算符 15 C 語(yǔ)言中的邏輯運(yùn)算符 16 C 語(yǔ)言中的三目運(yùn)算符 17 C 語(yǔ)言中的分支結(jié)構(gòu) 18 C 語(yǔ)言中的多重分支 19 C 語(yǔ)言中的分支嵌套結(jié)構(gòu) 20 C 語(yǔ)言中的循環(huán)結(jié)構(gòu) 21 C 語(yǔ)言中的 while 循環(huán) 22 C 語(yǔ)言中的 do-While 循環(huán) 23 C 語(yǔ)言中的 for 循環(huán) 24 C 語(yǔ)言中的多重循環(huán)嵌套 25 循環(huán)實(shí)戰(zhàn),打印九九乘法表 26 C 語(yǔ)言中的break和continue 27 C 語(yǔ)言中的 if 語(yǔ)句 28 C 語(yǔ)言中的 switch/case 語(yǔ)句 29 C 語(yǔ)言中的函數(shù) 30 C 語(yǔ)言函數(shù)的定義和聲明 31 C 語(yǔ)言中函數(shù)的參數(shù)傳入類(lèi)型 32 C 語(yǔ)言中的 main() 函數(shù)參數(shù) 33 make 工具 makefile 34 C 語(yǔ)言中的數(shù)組 35 C 語(yǔ)言中的多維數(shù)組 36 數(shù)組的練習(xí) 37 C 語(yǔ)言中的字符串 38 C 語(yǔ)言中的字符串函數(shù) 39 C 語(yǔ)言字符串練習(xí) 40 C 語(yǔ)言中的指針 41 C 語(yǔ)言中的 struct 42 C 語(yǔ)言中的 union 43 C 語(yǔ)言中的 maclloc free() 44 C 語(yǔ)言中的 enum 45 整體練習(xí)-學(xué)生管理系統(tǒng)

C 語(yǔ)言中的 union

由于 C 語(yǔ)言是強(qiáng)類(lèi)型語(yǔ)言,不能如同某些語(yǔ)言一樣,可以在變量中存儲(chǔ)任意元素。所以在有的時(shí)候會(huì)遇到一些問(wèn)題。比如你有一個(gè)變量需要存儲(chǔ)計(jì)算結(jié)果,計(jì)算結(jié)果有時(shí)可能是整數(shù),有時(shí)可能是浮點(diǎn)數(shù)。這里我們介紹其中可以做到不更改變量名就可以存儲(chǔ)不同類(lèi)型數(shù)據(jù)的變量。

1. 聲明 union

和之前介紹的 struct 的聲明方式是類(lèi)似的,通過(guò)關(guān)鍵字 union ,以及這個(gè) union 的名稱(chēng),還有一系列的變量類(lèi)型以及名稱(chēng)。

union Calculation
{
    int i;
    float f;
    char str[100];
};

union Calculation cal1, cal2;

看著結(jié)構(gòu)感覺(jué)是不是很熟悉。但是這和 struct 有著本質(zhì)的不同。之前的 struct 是一個(gè)集合,里面的變量之間是獨(dú)立的。而這個(gè) union 則正好相反,這不是一個(gè)集合,而只是一個(gè)特殊的變量,是一個(gè),不是多個(gè)。只不過(guò)這個(gè)變量可以在其聲明包含的這些變量類(lèi)型之間變化。一次只能有一個(gè)內(nèi)部的變量類(lèi)型被賦值,如果多次賦值,那么最后一次的賦值會(huì)覆蓋前面的變量?jī)?nèi)容。

2. 初始化 union

初始化一個(gè) union 和初始化一個(gè)變量是一致的,只能初始化里面其中一個(gè)值,一般默認(rèn)形式是初始化其中的第一個(gè)值。

union Calculation cal1 = 1;

3. 使用 union

使用一個(gè) union 變量需要使用成員訪(fǎng)問(wèn)符,也就是英文句號(hào) . 。

cal1.i = 1;

4. 示例程序

#include <stdio.h>
#include <string.h>

int main()
{
    union Calculation {
        int i;
        float f;
        char str[100];
    };

    union Calculation cal1 = {1};

    printf("cal1.i: %d, cal1.f: %f, cal1.str: %s\n", cal1.i, cal1.f, cal1.str);

    cal1.f = 0.111;

    printf("cal1.i: %d, cal1.f: %f, cal1.str: %s\n", cal1.i, cal1.f, cal1.str);

    strcpy(cal1.str, "None");

    printf("cal1.i: %d, cal1.f: %f, cal1.str: %s\n", cal1.i, cal1.f, cal1.str);

    return 0;
}

運(yùn)行結(jié)果:

cal1.i: 1, cal1.f: 0.000000, cal1.str: 
cal1.i: 1038308344, cal1.f: 0.111000, cal1.str: S=
cal1.i: 1701736270, cal1.f: 70373527000468267466752.000000, cal1.str: None

在這個(gè)示例中我們展示了其用法??梢钥吹匠跏蓟臅r(shí)候只能給第一種類(lèi)型的變量賦值,后面的每次賦值都會(huì)覆蓋其他類(lèi)型的值。所以只有最后一次的賦值的類(lèi)型是可以使用的。這和之前介紹的 struct 是完全不同的。

5. 小結(jié)

到這里可能有些同學(xué)不解其中緣由,其實(shí)不復(fù)雜,主要是兩個(gè)在內(nèi)存的存儲(chǔ)分配上是不同的。之前的 struct 是給每一種類(lèi)型的變量都存儲(chǔ)的存儲(chǔ)空間,而 union 則只是按照類(lèi)型里需要內(nèi)存最多的類(lèi)型分配了一個(gè)內(nèi)存存儲(chǔ)位置。因?yàn)橹挥幸粋€(gè)存儲(chǔ)位置,所以就會(huì)出現(xiàn)后面的會(huì)覆蓋掉之前存儲(chǔ)的內(nèi)容的情況。