亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C語(yǔ)言聯(lián)合體類(lèi)型的實(shí)現(xiàn)

 更新時(shí)間:2024年02月06日 11:34:12   作者:愚潤(rùn)求學(xué)  
聯(lián)合體也是一種構(gòu)造數(shù)據(jù)類(lèi)型,和結(jié)構(gòu)體類(lèi)型一樣,它也是由各種不同類(lèi)型的數(shù)據(jù)組成,本文主要介紹了C語(yǔ)言聯(lián)合體類(lèi)型的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下

一,什么是聯(lián)合體

聯(lián)合體也稱共用體
像結(jié)構(gòu)體一樣,聯(lián)合體也是由一個(gè)或者多個(gè)成員構(gòu)成,這些成員的類(lèi)型可以不同。但是,與結(jié)構(gòu)體不同的是:聯(lián)合體的所有成員共用一塊內(nèi)存空間。(即:給聯(lián)合體其中的一個(gè)成員賦值,其他成員的值也會(huì)跟著被改變)

二,聯(lián)合體的聲明

1,聯(lián)合體類(lèi)型的聲明

C語(yǔ)言中聯(lián)合體類(lèi)型的定義形式:

union 聯(lián)合體名
{
成員項(xiàng)表列
};

例如:
(我們定義一個(gè)同時(shí)由char和int型構(gòu)成的聯(lián)合體)

union Un
{
   char c;
   int i;
}; (注意:分號(hào)不能丟)

2,聯(lián)合體變量的創(chuàng)建

同結(jié)構(gòu)體變量的創(chuàng)建類(lèi)似,我們可以在聲明聯(lián)合體類(lèi)型的同時(shí)創(chuàng)建變量;也可以在聲明后,再創(chuàng)建變量
如:
(1)先聲明聯(lián)合體類(lèi)型,再創(chuàng)建變量

#include<stdio.h>
union Un
{
	char c;
	int i;
};
union Un u1;

(2)在聲明聯(lián)合體類(lèi)型的同時(shí)創(chuàng)建變量

union Un
{
	char c;
	int i;
}u1;

對(duì)聯(lián)合體成員的引用也與對(duì)結(jié)構(gòu)體成員的引用相同

三,聯(lián)合體的特點(diǎn)

1,聯(lián)合體與結(jié)構(gòu)體的對(duì)比

聯(lián)合體的大部分與結(jié)構(gòu)體相似,其獨(dú)特之處就是所有成員共用一塊內(nèi)存空間

例如,我們看擁有相同成員的結(jié)構(gòu)體和聯(lián)合體對(duì)比:

在這里插入圖片描述

對(duì)于s1 和 u1的內(nèi)存分配情況應(yīng)該是:

在這里插入圖片描述

我們可以用sizeof算一算,看看結(jié)果:
運(yùn)行下面代碼:

int main()
{
	printf("%d\n", sizeof(s1));
	printf("%d\n", sizeof(u1));
	return 0;
}

輸出:

這里是引用

可以發(fā)現(xiàn):和我們上面的分析一樣

2,對(duì)聯(lián)合體成員進(jìn)行改變

下面我們就對(duì)聯(lián)合體u1中的成員c進(jìn)行賦值,然后再打印成員i

#include<stdio.h>
union Un
{
	char c;
	int i;
}u1;
int main()
{
	u1.c = 1;
	printf("%d", u1.i);
	return 0;
}

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

在這里插入圖片描述

可見(jiàn):盡管沒(méi)有給成員i賦值,但是隨著成員c被修改成員i的值也發(fā)生了變化

四,聯(lián)合體的大小

上面提到的聯(lián)合體u1的大小是4,剛好是當(dāng)中最大的int類(lèi)型的大小,難道聯(lián)合體的大小就是其中最大成員的大小嗎?
答案是:錯(cuò)誤的
因?yàn)槁?lián)合體的大小也要滿足是最大對(duì)齊數(shù)的整數(shù)倍

?換句話來(lái)說(shuō),聯(lián)合體的大小要滿足以下兩個(gè)條件:
1,大于或等于最大的成員(至少要能裝下最大的成員)
2,同時(shí)是最大對(duì)齊數(shù)的整數(shù)倍

對(duì)于上面的u1
最大成員:int類(lèi)型的大小是4
int的最大對(duì)齊數(shù)也是4,所以聯(lián)合體u1的大小是4

再看下面的代碼(多加一個(gè)字符數(shù)組):

#include<stdio.h>
union Un
{
	char c;
	int i;
	char arr[6];
}u1;
int main()
{
	u1.c = 1;
	printf("%d",sizeof(u1));
	return 0;
}

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

在這里插入圖片描述

這是因?yàn)椋?br />1,最大成員char arr[6]的大小是6
2,最大對(duì)齊數(shù)是4
6不是4的倍數(shù),所以擴(kuò)寬到8,所以聯(lián)合體的大小是8

到此這篇關(guān)于C語(yǔ)言聯(lián)合體類(lèi)型的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)C語(yǔ)言聯(lián)合體類(lèi)型內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C語(yǔ)言使用ffmpeg實(shí)現(xiàn)單線程異步的視頻播放器

    C語(yǔ)言使用ffmpeg實(shí)現(xiàn)單線程異步的視頻播放器

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言如何使用ffmpeg實(shí)現(xiàn)單線程異步的視頻播放器功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以嘗試一下
    2022-12-12
  • C++實(shí)現(xiàn)俄羅斯方塊源碼

    C++實(shí)現(xiàn)俄羅斯方塊源碼

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)俄羅斯方塊源碼完整版,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • C++小知識(shí):C/C++中不要按值傳遞數(shù)組

    C++小知識(shí):C/C++中不要按值傳遞數(shù)組

    今天小編就為大家分享一篇關(guān)于C++小知識(shí):C/C++中不要按值傳遞數(shù)組,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-01-01
  • C語(yǔ)言 語(yǔ)義陷阱超詳細(xì)梳理總結(jié)

    C語(yǔ)言 語(yǔ)義陷阱超詳細(xì)梳理總結(jié)

    這篇文章主要介紹了C語(yǔ)言常見(jiàn)的一些語(yǔ)義陷阱,梳理的比較全面,對(duì)我們做開(kāi)發(fā)的過(guò)程中有一定幫助,感興趣的朋友快來(lái)看看吧
    2022-03-03
  • libevent庫(kù)的使用--定時(shí)器的使用實(shí)例

    libevent庫(kù)的使用--定時(shí)器的使用實(shí)例

    這篇文章主要介紹了libevent庫(kù)的使用--定時(shí)器的使用實(shí)例,有需要的朋友可以參考一下
    2013-12-12
  • C語(yǔ)言鏈表實(shí)現(xiàn)貪吃蛇游戲

    C語(yǔ)言鏈表實(shí)現(xiàn)貪吃蛇游戲

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言鏈表實(shí)現(xiàn)貪吃蛇游戲源碼,適合C語(yǔ)言入門(mén)者學(xué)習(xí)閱讀,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • C語(yǔ)言malloc分配問(wèn)題詳解

    C語(yǔ)言malloc分配問(wèn)題詳解

    這篇文章主要介紹了c語(yǔ)言 malloc函數(shù)的分配問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-09-09
  • Ubuntu18.04下QT開(kāi)發(fā)Android無(wú)法連接設(shè)備問(wèn)題解決實(shí)現(xiàn)

    Ubuntu18.04下QT開(kāi)發(fā)Android無(wú)法連接設(shè)備問(wèn)題解決實(shí)現(xiàn)

    本文主要介紹了Ubuntu18.04下QT開(kāi)發(fā)Android無(wú)法連接設(shè)備問(wèn)題解決實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • c++ 解析yaml文件的步驟

    c++ 解析yaml文件的步驟

    這篇文章主要介紹了c++ 解析yaml文件的步驟,幫助大家更好的理解和使用c++,感興趣的朋友可以了解下
    2020-12-12
  • C++利用ImGUI繪制D3D外部菜單

    C++利用ImGUI繪制D3D外部菜單

    ImGUI 它是與平臺(tái)無(wú)關(guān)的C++輕量級(jí)跨平臺(tái)圖形界面庫(kù),沒(méi)有任何第三方依賴,可以將ImGUI的源碼直接加到項(xiàng)目中使用。本文將利用ImGUI繪制D3D外部菜單,需要的可以參考一下
    2022-09-09

最新評(píng)論