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

C語言共用體union作用使用示例教程

 更新時(shí)間:2022年02月16日 11:40:45   作者:喬喬家的龍龍  
這篇文章主要為大家介紹了C語言共用體union作用的使用示例教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

共用體 union

什么是共用體 union?這個(gè)共用體,估計(jì)大家平時(shí)在代碼也比較少見,我去看了;其實(shí)這個(gè)共用體 union(也叫聯(lián)合體)跟結(jié)構(gòu)體定義是非常像的,比如說:類型定
義、變量定義、使用方法上很相似。就像下面兩個(gè)例子一樣,把許多類型聯(lián)合在一起

 union st{
 char a;
 int b;
 }

共用體也是一種自定義類型,可以通過它來創(chuàng)建變量,例如:

union num{
    int n;
    char ch;
    double f;
};
union num a, b, c;

也可以在定義共用體的同時(shí)創(chuàng)建變量:

union num{
    int n;
    char ch;
    double f;
} a, b, c;

如果不定義新的變量,也可以將共用體的名字省略:

union{
    int n;
    char ch;
    double f;
} a, b, c;

開鍋解構(gòu)

說到這里我扯一下結(jié)構(gòu)體,結(jié)構(gòu)體是用來存放一組不同類型的數(shù)據(jù)。結(jié)構(gòu)體的定義形式為:

struct 結(jié)構(gòu)體名{
結(jié)構(gòu)體所包含的變量或數(shù)組
};

結(jié)構(gòu)體和共用體又有什么淵源嗎?
這里先端上一份代碼:

#include <stdio. h>
 typedef union{
 int a;
 char c;
 //int a;
 //int b;
 }st;
 int main(void)
 {
 st bit;
 bit. c='B';
 // bit. a=10;
 //bit. b=60;
 printf("the haha size is%d\n", sizeof(bit));
 printf( "haha. c=%d\n", bit. c);
 return 0;
 }

我們可以看到結(jié)果:

在這里插入圖片描述

通過上面的代碼,可以發(fā)現(xiàn)這個(gè)共用體的大小,并不是像我們之前結(jié)構(gòu)體那樣是把每個(gè)成員所占內(nèi)存大小加起來,而是我們上面說的那樣,共用體由成員占用內(nèi)存大小最大的那個(gè)決定的。

上面的示例中int占用4個(gè)字節(jié)大小,為最大的,所以 sizeof(bit) 得出結(jié)果就是4個(gè)字節(jié)大小,其實(shí)打印出來的結(jié)果a和b都是60,它是訪問內(nèi)存占用大小最大的那個(gè)成員的數(shù)值,因?yàn)槟莻€(gè)’ B '的ASCII碼值是是66。union訪問其成員方式跟結(jié)構(gòu)體是一樣滴

其實(shí)結(jié)構(gòu)體類似于一個(gè)人體,人體中的器官彼此是獨(dú)立存在的,結(jié)構(gòu)體的成員也是如此,分布在內(nèi)存的不同單元中,他們只是被打包成一個(gè)整體叫做結(jié)構(gòu)體而已;共用體中的各個(gè)成員其實(shí)是一體的,彼此不獨(dú)立,他們使用同一個(gè)內(nèi)存單元??梢岳斫鉃?有時(shí)候是這個(gè)元素,有時(shí)候是那個(gè)元素。更準(zhǔn)確的說法是同一個(gè)內(nèi)存空間有多種解釋方式。

小結(jié)一手

  • 1.union中可以定義多個(gè)成員, union的內(nèi)存大小由最大的成員的大小來決定。
  • 2.union成員共享同一塊大小的內(nèi)存,一次只能使用其中的一個(gè)成員。
  • 3.對某一個(gè)成員賦值,因?yàn)樗麄児灿猛粔K內(nèi)存,所以當(dāng)他們字節(jié)數(shù)相同時(shí),會覆蓋其他成員的值;但如果不同就只會覆蓋相同類型的成員。比如我賦值給int類型,就會覆蓋其他int 類型而char類型只會在旁邊吃瓜,不受影響。
  • 4.union的存放順序都是由低地址開始存放。
  • 5.union中sizeof觀測到的大小實(shí)際上是union中各個(gè)元素里面占用內(nèi)存的最大的的那個(gè)元素大小。因?yàn)榭梢源娴孟逻@個(gè)就一定可以存的下其他元素。

以上就是C語言共用體union作用使用示例教程的詳細(xì)內(nèi)容,更多關(guān)于C語言共用體union的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • C++示例講解觀察者設(shè)計(jì)模式

    C++示例講解觀察者設(shè)計(jì)模式

    觀察者模式是極其重要的一個(gè)設(shè)計(jì)模式,也是我?guī)啄觊_發(fā)過程中使用最多的設(shè)計(jì)模式,本文首先概述觀察者模式的基本概念和Demo實(shí)現(xiàn),接著是觀察者模式在C++中的應(yīng)用,最后是對觀察者模式的應(yīng)用場景和優(yōu)缺點(diǎn)進(jìn)行總結(jié)
    2022-12-12
  • C#和C++編程語言中的類淺析

    C#和C++編程語言中的類淺析

    在本篇文章里我們給大家分析了C#和C++編程語言中的類的相關(guān)知識點(diǎn),正在學(xué)習(xí)的朋友們跟著操作下。
    2019-02-02
  • C語言基礎(chǔ)解析之分支與循環(huán)語句

    C語言基礎(chǔ)解析之分支與循環(huán)語句

    C語言是一門結(jié)構(gòu)化的程序設(shè)計(jì)語言,當(dāng)C語言用來描述生活中的事物時(shí),會用到三種結(jié)構(gòu):順序結(jié)構(gòu)(不去贅述),選擇結(jié)構(gòu)(對應(yīng)分支語句),循環(huán)結(jié)構(gòu)(對應(yīng)循環(huán)語句),分支語句:分支語句分為兩種,一種是if語句,一種是switch語句
    2021-09-09
  • MFC Frame-Splitter模型實(shí)例原理解析

    MFC Frame-Splitter模型實(shí)例原理解析

    這篇文章主要介紹了MFC Frame-Splitter模型實(shí)例原理解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • C++基于回溯法解決八皇后問題示例

    C++基于回溯法解決八皇后問題示例

    這篇文章主要介紹了C++基于回溯法解決八皇后問題,簡單描述了八皇后問題,以及回溯法的原理與解決八皇后問題的相關(guān)操作技巧,需要的朋友可以參考下
    2017-11-11
  • C語言基于EasyX庫實(shí)現(xiàn)有圖形界面鐘表

    C語言基于EasyX庫實(shí)現(xiàn)有圖形界面鐘表

    這篇文章主要介紹了C語言基于EasyX庫實(shí)現(xiàn)有圖形界面鐘表,直線轉(zhuǎn)動端點(diǎn)計(jì)算,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • C++使用HDF5庫實(shí)現(xiàn)將h5圖像轉(zhuǎn)為tif格式

    C++使用HDF5庫實(shí)現(xiàn)將h5圖像轉(zhuǎn)為tif格式

    這篇文章主要為大家詳細(xì)介紹了C++ 語言如何通過hdf5庫與gdal庫實(shí)現(xiàn)將.h5格式的多波段HDF5圖像批量轉(zhuǎn)換為.tif格式,有需要的可以參考一下
    2024-12-12
  • opencv3/C++ FLANN特征匹配方式

    opencv3/C++ FLANN特征匹配方式

    今天小編就為大家分享一篇opencv3/C++ FLANN特征匹配方式,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • C++模板template用法小結(jié)(推薦)

    C++模板template用法小結(jié)(推薦)

    這篇文章主要介紹了C++模板template用法總結(jié) ,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-03-03
  • C++實(shí)現(xiàn)LeetCode(157.用Read4來讀取N個(gè)字符)

    C++實(shí)現(xiàn)LeetCode(157.用Read4來讀取N個(gè)字符)

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(157.用Read4來讀取N個(gè)字符),本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07

最新評論

砀山县| 申扎县| 林甸县| 罗平县| 遂溪县| 茌平县| 彩票| 旬阳县| 揭东县| 南丰县| 和林格尔县| 汕尾市| 通城县| 克拉玛依市| 扬中市| 理塘县| 绍兴县| 板桥市| 依兰县| 息烽县| 镇安县| 宁远县| 温宿县| 辛集市| 乌审旗| 天台县| 偏关县| 科尔| 永和县| 深泽县| 鄯善县| 和硕县| 沙田区| 扶沟县| 淮北市| 巴青县| 泰兴市| 柳州市| 金沙县| 班玛县| 茌平县|