c語(yǔ)言中union類(lèi)型 c語(yǔ)言,union有什么用?
c語(yǔ)言,union有什么用?union是一種數(shù)據(jù)類(lèi)型,在一段物理空間內(nèi)可以存儲(chǔ)你定義的不同的幾個(gè)數(shù)據(jù)類(lèi)型的一種。目的是節(jié)省空間和創(chuàng)建多個(gè)變量的花銷(xiāo)。比如union{intidoublej}u這個(gè)變量u
c語(yǔ)言,union有什么用?
union是一種數(shù)據(jù)類(lèi)型,在一段物理空間內(nèi)可以存儲(chǔ)你定義的不同的幾個(gè)數(shù)據(jù)類(lèi)型的一種。目的是節(jié)省空間和創(chuàng)建多個(gè)變量的花銷(xiāo)。比如union{intidoublej}u這個(gè)變量u為8個(gè)字節(jié)(int:4字節(jié)double:8字節(jié))這時(shí)候你可以用u.i存儲(chǔ)int類(lèi)型數(shù)據(jù)或者用u.j存儲(chǔ)double類(lèi)型數(shù)據(jù)切換使用時(shí)后者數(shù)據(jù)會(huì)覆蓋前者(因?yàn)楣蚕硪欢蝺?nèi)存)
C語(yǔ)言中聯(lián)合體(union)的使用?
//C語(yǔ)言有union聯(lián)合體,下面有一個(gè)使用聯(lián)合體的小例子。#include<stdio.h>intmain(){inta=1charstr[]="thisisastring!"unionintorpointer{intnchar*pt}unionintorpointerv1v1.n=aprintf("%dn",v1.n)v1.pt=strprintf("%sn",v1.pt)return0}
C語(yǔ)言u(píng)nion的用法?
C語(yǔ)言中,union的使用與struct 的用法非常類(lèi)似,主要區(qū)別在于union 維護(hù)足夠的空間來(lái)置放多個(gè)數(shù)據(jù)成員中的“一種”,而不是為每一個(gè)數(shù)據(jù)成員配置空間,在union 中所有的數(shù)據(jù)成員共用一個(gè)空間,同一時(shí)間只能儲(chǔ)存其中一個(gè)數(shù)據(jù)成員,所有的數(shù)據(jù)成員具有相同的起始地址。具體的案例:union StateMachine{ char character int number char *str double exp}一個(gè)union 只配置一個(gè)足夠大的空間以來(lái)容納最大長(zhǎng)度的數(shù)據(jù)成員,以上例而言,最大長(zhǎng)度是double 型態(tài),所以StateMachine 的空間大小就是double 數(shù)據(jù)類(lèi)型的大小。union,即“聯(lián)合”,是一種特殊的類(lèi),也是一種構(gòu)造類(lèi)型的數(shù)據(jù)結(jié)構(gòu)。在一個(gè)“聯(lián)合”內(nèi)可以定義多種不同的數(shù)據(jù)類(lèi)型, 一個(gè)被說(shuō)明為該“聯(lián)合”類(lèi)型的變量中,允許裝入該“聯(lián)合”所定義的任何一種數(shù)據(jù),這些數(shù)據(jù)共享同一段內(nèi)存,以達(dá)到節(jié)省空間的目的(還有一個(gè)節(jié)省空間的類(lèi)型:位域)。 這是一個(gè)非常特殊的地方,也是聯(lián)合的特征。另外,同struct一樣,聯(lián)合默認(rèn)訪問(wèn)權(quán)限也是公有的,并且,也具有成員函數(shù)。