聯合體(union)和結構體(struct)的區別

1.?聯合說明和聯合變量定義?

聯合也是一種新的數據類型,?它是一種特殊形式的變量。?
聯合說明和聯合變量定義與結構十分相似。其形式為:?
union?聯合名{?
數據類型?成員名;?
數據類型?成員名;?
...?
}?聯合變量名;
?

聯合表示幾個變量公用一個內存位置,?在不同的時間保存不同的數據類型?和不同長度的變量。?
下例表示說明一個聯合a_bc:?
union?a_bc{?
int?i;?
char?mm;?
};?

再用已說明的聯合可定義聯合變量。?
例如用上面說明的聯合定義一個名為lgc的聯合變量,?可寫成:?
union?a_bc?lgc;?
在聯合變量lgc中,?整型量i和字符mm公用同一內存位置。?
當一個聯合被說明時,?編譯程序自動地產生一個變量,?其長度為聯合中最大的變量長度。?

聯合訪問其成員的方法與結構相同。同樣聯合變量也可以定義成數組或指針,但定義為指針時,?也要用" ->;"符號,?此時聯合訪問成員可表示成:?
聯合名->成員名?

另外,?聯合既可以出現在結構內,?它的成員也可以是結構。?
例如:?
struct{?
int?age;?
char?*addr;?
union{?
int?i;?
char?*ch;?
}x;?
}y[10];?

若要訪問結構變量y[1]中聯合x的成員i,?可以寫成:?
y[1].x.i;?
若要訪問結構變量y[2]中聯合x的字符串指針ch的第一個字符可寫成:?
*y[2].x.ch;?
若寫成"y[2].x.*ch;"是錯誤的。?

2.?結構和聯合的區別?
結構和聯合有下列區別:?
1) 結構和聯合都是由多個不同的數據類型成員組成,?但在任何同一時刻,? 聯合轉只存放了一個被選中的成員,?而 結構的所有成員都存在。?
2) 對于聯合的不同成員賦值,?將會對其它成員重寫,?? 原來成員的值就不存在了,? 而對于結構的不同成員賦值是互不影響的。?
下面舉一個例了來加對深聯合的理解。?

main()?
{?
union{???????????????????/*定義一個聯合*/?
int?i;?
struct{?????????????/*在聯合中定義一個結構*/?
char?first;?
char?second;?
}half;?
}number;?

number.i=0x4241;?????????/*聯合成員賦值*/?
printf("%c%c\n",?number.half.first,?mumber.half.second);?
number.half.first='a';???/*聯合中結構成員賦值*/?
number.half.second='b';?
printf("%x\n",?number.i);?
getch();?
}?
輸出結果為:?
AB?
6261?

從上例結果可以看出:?當給i賦值后,?其低八位也就是first和second的值;當給first和second賦字符后,?這兩個字符的ASCII碼也將作為i?的低八位和高八位。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/254398.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/254398.shtml
英文地址,請注明出處:http://en.pswp.cn/news/254398.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

MVC架構簡介及其測試策略

最近在WEB端測試工作中陷入了瓶頸,單純的手動功能測試在沒有成熟的代碼規范之前還是很容易坑的,WEB自動化測試一時半會還沒有什么進展,所以決定先學習一下網站用的MVC架構,跟著教程寫了一個小網站,大概也找到了WEB測試…

prototype與_proto_

1、prototype與_proto_ ①prototype:是函數才有的屬性,這個屬性是一個指針。當一個構造函數被創建時,該構造函數會自動生成一個prototype指針,該指針指向構造函數的原型。這個原型會有其他實例共享的一些屬性和方法。 ②_proto_&a…

Halcon求取矩形頂點坐標

文章目錄簡介Halcon源碼博主寫作不容易,孩子需要您鼓勵 萬水千山總是情 , 先點個贊行不行 簡介 我們在使用Halcon畫矩形時,并不能得到矩形四角頂點坐標。但是我們可以通過數學計算得到矩形定點坐標的位置。 我們在計算過程中需要知道矩形的長軸與短…

kafka常用的shell命令

kafka常用shell命令: ------------------------------------ 1、創建topic bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test 2、查看創建的topic bin/kafka-topics.sh --list --zookeeper localhost:…

python+pycharm+Django報錯

報錯&#xff1a; Unhandled exception in thread started by <function wrapper at 0x2d7e410>Traceback (most recent call last):File "/root/virtual_dir/wxwebapp_court_nositepkg/lib/python2.7/site-packages/django/utils/autoreload.py", line 226, i…

C++多線程實例(_beginThreadex創建多線程)

C多線程&#xff08;二&#xff09;(_beginThreadex創建多線程) C/C Runtime 多線程函數一 簡單實例&#xff08;來自codeprojct&#xff1a;http://www.codeproject.com/useritems/MultithreadingTutorial.asp&#xff09; 主線程創建2個線程t1和t2&#xff0c;創建時2個線程…

halcon求取區域頂點

文章目錄簡介Halcon源代碼處理效果博主寫作不容易&#xff0c;孩子需要您鼓勵 萬水千山總是情 , 先點個贊行不行 簡介 使用halcon求取頂點的方法。 Halcon源代碼 read_image (Image1, 1.png)points_foerstner (Image1, 1, 2, 3, 200, 0.3, gauss, false, RowJunctions, …

從excel表中生成批量SQL,將數據錄入到數據庫中

excel表格中有許多數據&#xff0c;需要將數據導入數據庫中&#xff0c;又不能一個一個手工錄入&#xff0c;可以生成SQL&#xff0c;來批量操作。1.首先在第二行的H列&#xff0c;插入函數&#xff1a;CONCATENATE("INSERT INTO book (bookid, title, volume, author, u…

HDU-5895 Mathematician QSC

題目大意&#xff1a; 已知f[0] 0, f[1] 1, f[i] f[i-1] * 2 f[i-2]&#xff0c;且g[n] g[n-1] f[n] * f[n]&#xff0c;現在給出n&#xff0c;y&#xff0c;x&#xff0c;s&#xff0c;問你x^(g[n*y]) mod (s 1)的值為多少。 解題思路&#xff1a; 首先可以得到的是g[n…

C#的兩種類據類型:值類型和引用類型

目錄什么是值類型&#xff0c;什么是引用類型概念&#xff1a;值類型和引用類型區別什么是值類型&#xff0c;什么是引用類型 概念&#xff1a; 值類型直接存儲其值&#xff0c;而引用類型存儲對其值的引用。部署&#xff1a;托管堆上部署了所有引用類型。 引用類型&#xf…

ring0 ring3 kernel driver

intel cpu的權限訪問控制&#xff1a;ring0 ~ ring5. window、linux操作系統都只用了ring0&#xff0c;ring3&#xff0c;對應內核態和用戶態. 驅動程序工作在內核態&#xff0c;沒有main函數入口&#xff0c;而應用程序工作在用戶態。轉載于:https://www.cnblogs.com/yiii/p/6…

Linux 的多線程編程的高效開發經驗

轉自&#xff1a;http://www.chineselinuxuniversity.net/articles/22615.shtml 本文中我們針對 Linux 上多線程編程的主要特性總結出 5 條經驗&#xff0c;用以改善 Linux 多線程編程的習慣和避免其中的開發陷阱。在本文中&#xff0c;我們穿插一些 Windows 的編程用例用以對…

Visual C++中error spawning cl.exe解決辦法

| 版權聲明&#xff1a;本文為博主原創文章&#xff0c;未經博主允許不得轉載。 今天安裝Vc6.0的時候出現了一個error spawning cl.exe的錯誤&#xff0c;在網上找了一些資料&#xff0c;才知道這是因為路徑設置的問題引起的&#xff0c; “cl.exe”是VC真正的程序編譯器&…

C#整數數據類型

文章目錄博主寫作不容易&#xff0c;孩子需要您鼓勵 萬水千山總是情 , 先點個贊行不行 數據類型含義取值范圍sbyte有符號8位整數-128 ~ 127&#xff08;-2^7 ~ 2^7-1&#xff09;byte無符號8位整數0 ~ 255&#xff08;0 ~ 2^8-1&#xff09;short有符號16位整數-32768 ~ 3…

HEXA機器人榮獲CES Asia2018 創新獎

2019獨角獸企業重金招聘Python工程師標準>>> 6月13日至15日&#xff0c;亞洲消費電子展CES Asia 2018將在上海新國際博覽中心如期舉行。在活動到來前&#xff0c;美國消費技術協會&#xff08;CTA&#xff09;于5月24日&#xff0c;提前揭曉了“2018亞洲消費電子展創…

【bzoj3994】[SDOI2015]約數個數和 莫比烏斯反演

題目描述 設d(x)為x的約數個數&#xff0c;給定N、M&#xff0c;求 輸入 輸入文件包含多組測試數據。 第一行&#xff0c;一個整數T&#xff0c;表示測試數據的組數。接下來的T行&#xff0c;每行兩個整數N、M。輸出 T行&#xff0c;每行一個整數&#xff0c;表示你所求的答案…

Linux根文件系統結構再認識

Linux根文件系統結構再認識劉建文&#xff08;http://blog.csdn.net/keminlau &#xff09; INTRO 盡管Linux的根文件系統在形式表現上是一體的&#xff08;所有數據目錄均為根目錄下的子目錄&#xff09;&#xff0c;但實際它們是多個不同的【邏輯主體】&#xff08;為了實現…

C#浮點數據類型

文章目錄博主寫作不容易&#xff0c;孩子需要您鼓勵 萬水千山總是情 , 先點個贊行不行 數據類型含義取值范圍有效數字位數float32位浮點數1.5X10^-45 ~ 3.4X10^387double64位浮點數5.0X10^-324 ~ 1.7X10^30815 ~ 16 注意&#xff1a; 浮點數有一定的取值范圍和有效數字限制…

在Window10上使用Ubuntu終端

在Windows10上使用Ubuntu終端 習慣了ubuntu的開發&#xff0c;回到windows的command可以說是很絕望了。之前偶爾用windows時一直用git-bash來代替。但是發現windows已經添加了對ubuntu子系統的支持&#xff0c;那直接用不是更爽。 1.安裝 進入控制面板&#xff0c;開啟適用于Li…

httpClient實現微信公眾號消息群發

1、實現功能  向關注了微信公眾號的微信用戶群發消息。&#xff08;可以是所有的用戶&#xff0c;也可以是提供了微信openid的微信用戶集合&#xff09; 2、基本步驟 前提&#xff1a; 已經有認證的公眾號或者測試公眾賬號 發送消息步驟&#xff1a; 發送一個請求微信去獲取ac…