① c語言,使用共用體union的目的是______。(5 分)
選A
共同體的用途,就是成員之間,共享同一好悉段存儲空間,成員的數據類型是不約束的。
如:
union {
char a[20];
float b;
};
當你用的想使用的數據是float時,就只斗輪使用空襪信前4個位元組。
如果你使用char[]類型的數據時,就使用全部20位元組的空間。
② c語言中的共用體是什麼
一、共同體的簡介:
在進行某些演算法的C語言編程時,需要使幾種不同類型的變數存放到同一段內存單元中,使幾個變數互相覆蓋,這種幾個不同信陪指的變數共同佔用一段內存的結構,在C語言中,被稱作共同體類型結構,簡稱共同體;
二、共同體類型數據的特點:
1.同一個內存段可以用來存放幾種不同類型的成員,但在每一瞬間只能存放其中的一種,而不是同時存放幾種;
2.共同體變數中起作用的成員是最後一次存放的成員,在存入一個新成員後,原有成員就失去作用;
3.共同體變數的地址和它的各成員的地址都是同一地址;
4.不能對共同體變數名亂茄賦值,也不能企圖引用變數名來得到一個值;
5.共同體類型可以出現滑配在結構體類型的定義中,也可以定義共同體數組。
③ C語言有關共用體的使用方法,請前輩們請教謝謝啦!
共用體又稱聯合體,關鍵字union,正如其名字,其成員變數共同佔用同一段內存,這段內存的大小就是所有成員中最大的那個,所以整個共用體變數大小就是其最大成員大小,比如你代碼中的A大小就是成員c的大小8個位元組。
至於用處還是有很多的:
比如我們表示一個學生分數,有幼兒,小學,初中,這三種學生信息結構基本相同,但只有分數標准不一樣,幼兒分數(差、中、優),小學(C、B、A),初中(0~100分)。那麼我們就可以把學生信息定義成結構體,而結構成員分數那一塊定義成共用體(包含字元串類型,字元類型、數值類型)。這樣結構本身就不需要定義三種類型成員了。
又比如,數據傳遞時,用共用體表示數據,之後只要按照你的需求按不同格式獲取數據。
④ 結構體和共用體在c語言中是怎麼用的
結構體和共用體其實都是用來描述一組由不同類型變數的集合,也就是說結構體和共用體中都可以同時存在int型、char型、float型等等!!
但是不同的是,結構體內所定義的每一個變數都有其自己獨立的存儲空間,互不幹涉,比如一個結構體中有一個int型、同時有一個char型,那麼它們是獨立的,總共佔用三個位元組空間。
而共用體內定義的每一個變數都共同享有同一個存儲空間,存儲空間的大小是佔用空間最大的那個一變數的大小。比如,我還是在裡面有一個int型和一個char型,那這個共用體就佔int型的2個位元組,加入我用共用體存入一個char型數據,我可以用int型來讀取,讀的是二進制數據。
呵呵呵呵,c語言是很久以前學的了,不知道這點記憶對不對,但是希望能幫得到你。
⑤ C語言共同體問題
結果應該是輸出一個隨機數!有這樣幾個概念關於共用體,也就是你說的共同體:
1、共用體是幾種不同的變數存放在同一內存當中,即在內存中占同一位置
2、同一內存段可以用來存放幾種不同類型的成員,但是在每一瞬只能放其中的一種,而不是同時存放幾種類型。也就是每一瞬只有一個成員起作用!
3、共用體變數中起作用的成員是最後一次存放的成員。
根據以上原則來看你這道題:
#include
"stdio.h"
union
un
{
int
i;
char
c[2];
}
//共用體變數定義完成後應當以分號結束,此處應該加一個分號
main()
{
union
un
x;
//定義共用體變數x
x.c[0]=10;
//字元數組第一個字元位置存放整型10,字元變數和整型變數可以相互轉換
x.c[1]=1;
//字元數組第二個字元位置存放整型1
//至此,共用體變數x.c成員被賦值,其中x.c[0]==10,x.c[1]==1,而x.i不起作用
printf("\n%d",x.i);
//因為x.i沒有被賦值,所以它的值由內存自動分配,所以會產生隨機數
}
⑥ C里的共同體和結構體的區別
結構體(structure)與共同體(union)主要有以下區別:
1.結構體(structure)與共同體(union)都是遲世含由多個不同的數據類型成員組成, 但在任何同一時刻, 共同體(union)中只存放了一個被選中的成員, 而結構體(structure)的所有成員都存在。在結構體(structure)中,各成員都佔有自己的內存空間,它們是同時存在的。一個結構體(structure)變數的總長度等於所有成員長度之和。在共同體(union)中,所有成員不能同時佔用它的內存空間,它返慎們不能同時存在。共同體(union)變數的長度等於最長的成員的長度
2. 對碼笑於共同體(union)的不同成員賦值, 將會對其它成員重寫, 原來成員的值就不存在了, 而對於結構體(structure)的不同成員賦值是互不影響的
⑦ C語言的結構體和共同體的區別是什麼
結構體(structure)是一種構造類型,它是由若干「成員」組成的。每一個成員可以是一個基本數據類型或者又是一個構造類型,而且每個成員的數據類型可以相同也可以不相同。共同體(union)將幾種不同的變數儲存在同一內存單元中,也就是使用覆蓋技術,幾個變數互相覆蓋,這種幾個不同的變數共同佔用一段內存的結構,可見二者最大的區別就是所佔用的內存,結構體(structure)所佔用的內存是分量內存之和,共同體(union)所佔用的內存是等於最大的分量的內存。
具體來說,結構體(structure)與共同體(union)主要有以下區別:
1.結構體(structure)與共同體(union)都是由多個不同的數據類型成員組成,
但在任何同一時刻,
共同體(union)中只存放了一個被選中的成員,
而結構體(structure)的所有成員都存在。在結構體(structure)中,各成員都佔有自己的內存空間,它們是同時存在的。一個結構體(structure)變數的總長度等於所有成員長度之和。在共同體(union)中,所有成員不能同時佔用它的內存空間,它們不能同時存在。共同體(union)變數的長度等於最長的成員的長度。
2.
對於共同體(union)的不同成員賦值,
將會對其它成員重寫,
原來成員的值就不存在了,
而對於結構體(structure)的不同成員賦值是互不影響的。
⑧ C語言中共用體怎麼用
共同體實現了使不同類型的變數存放到同一段內存單元中的需求。各個類型的在內存中占的位元組數可以不同,但都從同一地址開始存放,採用了覆蓋技術。先定義一個共同體變數如union result{ int i; char c;}a,b;引用:先定義共同體變數,注意不能引用共同體變數,只能引用共同體變數中的成員,例如:a.i(正確);a(錯誤)因為a是一個共同體變數,由共同體採用覆蓋技術我們可以知道,a的存儲區有好幾種類型,佔用不同長度的存儲區,僅寫共同體變數名a,難以使系統確定究竟是輸出哪個成員。
⑨ 在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語言中,共用體一般有什麼作用
共用體是C語言中的一種數據類型,是指散運將不同類型的數據項存放於同一段內存單元的一種構造數據類型。
定義一個共用體類型的一般形式為:
union
共用體類型名
{
類型1
成員1;
類型沖鎮梁2
成員2;
......
類旅碧型n
成員n;
};
通信中的數據包會用到共用體。
因為不知道對方會發一個什麼包過來,用共用體的話就很簡單了,定義幾種格式的包,收到包之後就可以直接根據包的格式取出數據。