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

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

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

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

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

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

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

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

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)建類似,我們可以在聲明聯(lián)合體類型的同時(shí)創(chuàng)建變量;也可以在聲明后,再創(chuàng)建變量
如:
(1)先聲明聯(lián)合體類型,再創(chuàng)建變量

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

(2)在聲明聯(lián)合體類型的同時(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é)果:

在這里插入圖片描述

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

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

上面提到的聯(lián)合體u1的大小是4,剛好是當(dāng)中最大的int類型的大小,難道聯(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類型的大小是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)合體類型的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)C語(yǔ)言聯(lián)合體類型內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • STL中的string你了解嗎

    STL中的string你了解嗎

    這篇文章主要為大家詳細(xì)介紹了STL中的string,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-03-03
  • linux下c語(yǔ)言中隱藏進(jìn)程命令行參數(shù)(例如輸入密碼等高危操作)

    linux下c語(yǔ)言中隱藏進(jìn)程命令行參數(shù)(例如輸入密碼等高危操作)

    啟動(dòng)程序很多時(shí)候用命令行參數(shù)可以很方便,做到簡(jiǎn)化一些配置,但是輸入用戶名密碼等操作,如果通過進(jìn)程查看工具直接看到密碼就太不安全了,這里就為大家分享一下方法
    2021-01-01
  • C++實(shí)現(xiàn)LeetCode(50.求x的n次方)

    C++實(shí)現(xiàn)LeetCode(50.求x的n次方)

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(50.求x的n次方),本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • C語(yǔ)言中如何實(shí)現(xiàn)單鏈表刪除指定結(jié)點(diǎn)

    C語(yǔ)言中如何實(shí)現(xiàn)單鏈表刪除指定結(jié)點(diǎn)

    這篇文章主要介紹了C語(yǔ)言中如何實(shí)現(xiàn)單鏈表刪除指定結(jié)點(diǎn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • C語(yǔ)言新手練習(xí)之多維數(shù)組、結(jié)構(gòu)體及函數(shù)

    C語(yǔ)言新手練習(xí)之多維數(shù)組、結(jié)構(gòu)體及函數(shù)

    這篇文章主要給大家介紹了關(guān)于C語(yǔ)言新手練習(xí)之多維數(shù)組、結(jié)構(gòu)體及函數(shù)的相關(guān)資料,這些內(nèi)容在我們?nèi)粘i_發(fā)中經(jīng)常會(huì)遇到的,需要的朋友可以參考下
    2021-06-06
  • 基于make命令與makefile文件詳解

    基于make命令與makefile文件詳解

    下面小編就為大家分享一篇基于make命令與makefile文件詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧
    2018-01-01
  • C++ LeetCode1945題解字符串轉(zhuǎn)化后的各位數(shù)字之和

    C++ LeetCode1945題解字符串轉(zhuǎn)化后的各位數(shù)字之和

    這篇文章主要為大家介紹了C++ LeetCode1945題解字符串轉(zhuǎn)化后的各位數(shù)字之和示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • 基于C語(yǔ)言指令的深入分析

    基于C語(yǔ)言指令的深入分析

    本篇文章是對(duì)C語(yǔ)言的指令進(jìn)行了詳細(xì)的分析與介紹,需要的朋友參考下
    2013-05-05
  • vs2020打包生成exe的實(shí)現(xiàn)方法

    vs2020打包生成exe的實(shí)現(xiàn)方法

    本文主要介紹了Visual Studio Installer Projects插件和第三方軟件SetupFactory創(chuàng)建可安裝的Windows應(yīng)用程序包,并最終將其轉(zhuǎn)換為可執(zhí)行文件的方法,感興趣的可以了解一下
    2024-12-12
  • vs2019配置C++版OpenCV的方法步驟

    vs2019配置C++版OpenCV的方法步驟

    最近要用到很多OpenCV的庫(kù),所以開始學(xué)了點(diǎn)OpenCV,本文記錄VS和OpenCV的安裝、配置過程。具有一定的參考價(jià)值,感興趣的可以了解一下
    2021-09-09

最新評(píng)論

宣化县| 潢川县| 南涧| 民权县| 兴义市| 来凤县| 宜君县| 霸州市| 德安县| 阳城县| 纳雍县| 吉首市| 仁化县| 西城区| 双桥区| 溧阳市| 古浪县| 郓城县| 屯门区| 宁远县| 祁阳县| 阿合奇县| 乌海市| 双柏县| 榕江县| 馆陶县| 株洲市| 台北县| 钟祥市| 麦盖提县| 文山县| 三江| 江口县| 哈巴河县| 武宁县| 朝阳区| 长丰县| 衡东县| 和政县| 巩留县| 甘德县|