當前位置:首頁 » 編程語言 » c語言共同體大小
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言共同體大小

發布時間: 2023-02-15 18:56:23

c語言中共同體的大小是其成員的大小的和對嗎

不是,共用體只分配一個內存空間,然後各成員數據存在這一個空間中,相互覆蓋。

⑵ C語言共同體struct 中 怎麼計算整個共同體的大小 即用sizeof時 跟union一樣 是結構體里最大的元素大小么

struct是結構體
union是共用體
struct的大小應該用sizeof計算
struct實際佔用的內存大小大於或等於其中所有元素大小之和,因為有一個內存對齊問題
內存對齊問題比較復雜,可以網路之

⑶ c語言中的共用體是什麼

所謂共用體類型是指將不同的數據項組織成一個整體,它們在內存中佔用同一段存儲單元。其定義形式為:
union 共用體名
{成員表列};

union data
{
int a ;
float b;
doublec;
chard;
}obj;
該形式定義了一個共用體數據類型union data ,定義了共用體數據類型變數obj。共用體數據類型與結構體在形式上非常相似,但其表示的含義及存儲是完全不同的。先讓我們看一個小例子。

union data /*共用體*/
{
int a;
float b;
double c;
char d;
}mm;
struct stud /*結構體* /
{
int a;
float b;
double c;
char d;
};
main( )
{
struct stud student;
printf("%d,%d",sizeof(struct stud),sizeof(union data));
}
運行程序輸出:
15,8
程序的輸出說明結構體類型所佔的內存空間為其各成員所佔存儲空間之和。而形同結構體的共用體類型實際佔用存儲空間為其最長的成員所佔的存儲空間。
對共用體的成員的引用與結構體成員的引用相同。但由於共用體各成員共用同一段內存空間,使用時,根據需要使用其中的某一個成員。從圖中特別說明了共用體的特點,方便程序設計人員在同一內存區對不同數據類型的交替使用,增加靈活性,節省內存。

可以引用共用體變數的成員,其用法與結構體完全相同。若定義共用體類型為:
union data /*共用體*/
{
int a;
float b;
double c;
char d;
}mm;
其成員引用為:mm.a,mm.b,mm.c,mm.d 但是要注意的是,不能同時引用四個成員,在某一時刻,只能使用其中之一的成員。

main( )
{
union data
{
int a;
float b;
double c;
char d;
}mm;
mm.a=6;
printf("%d\n",mm.a);
mm.c=67.2;
printf("%5.1lf\n", mm.c);
mm.d='W';
mm.b=34.2;
printf("%5.1f,%c\n",mm.b,mm.d);
}
運行程序輸出為:
6
6 7.2
3 4.2,=
程序最後一行的輸出是我們無法預料的。其原因是連續做mm.d='W';mm.b=34.2;兩個連續的賦值語句最終使共用體變數的成員mm.b所佔四位元組被寫入34.2,而寫入的字元被覆蓋了,輸出的字元變成了符號「 =」。事實上,字元的輸出是無法得知的,由寫入內存的數據決定。
例子雖然很簡單,但卻說明了共用體變數的正確用法。

⑷ C語言共同體問題

准備參加全國計算機比賽是吧?!
我也是,這題我是這樣看的:公用體的每一個成員變數都是公用地址的,但是int型佔16位(2位元組),而char型佔8位,266換為2進制是 「1 0000 1010」,可以得出,char型的ch只取後8位,即「0000 1010」,換回10進制輸出則是「10」。
最後說一下一樓的問題,int在Turbo C 2.0和Turbo C++3.0為2位元組,而VC++6.0是4位元組(C語言程序 第三版),其實用2位元組的比較多,但事實上4位元組和2位元組在本體中沒有什麼區別。
我們一起努力吧,祝你好運!

⑸ C語言有關共用體的使用方法,請前輩們請教謝謝啦!

共用體又稱聯合體,關鍵字union,正如其名字,其成員變數共同佔用同一段內存,這段內存的大小就是所有成員中最大的那個,所以整個共用體變數大小就是其最大成員大小,比如你代碼中的A大小就是成員c的大小8個位元組。
至於用處還是有很多的:
比如我們表示一個學生分數,有幼兒,小學,初中,這三種學生信息結構基本相同,但只有分數標准不一樣,幼兒分數(差、中、優),小學(C、B、A),初中(0~100分)。那麼我們就可以把學生信息定義成結構體,而結構成員分數那一塊定義成共用體(包含字元串類型,字元類型、數值類型)。這樣結構本身就不需要定義三種類型成員了。
又比如,數據傳遞時,用共用體表示數據,之後只要按照你的需求按不同格式獲取數據。