真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

共同體c語言函數(shù) c語言共用體怎么用

c語言中共同體的用法

朋友你好!

10年積累的網(wǎng)站制作、成都網(wǎng)站建設(shè)經(jīng)驗,可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認識你,你也不認識我。但先網(wǎng)站設(shè)計制作后付款的網(wǎng)站建設(shè)流程,更有淮陰免費網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

你的程序已經(jīng)給你調(diào)適過了錯誤的地方有注釋

#include "stdafx.h"

#includestdio.h

struct

{

int num;

char name[10];

char sex;

char job;

union

{

int banji;

char position[10];

}category;

}person[2];

void main()

{

int i;

char d;

for(i=0;i2;i++)

{

scanf("%d %s %c %c",person[i].num,person[i].name,person[i].sex,person[i].job);

//"%d %s %c %c"要用空格隔開

if(person[i].job=='s')

scanf("%d",person[i].category.banji);

else if(person[i].job=='t')

scanf("%s",person[i].category.position);

else printf("input error!");

printf("%d %s %c %c",person[i].num,person[i].name,person[i].sex,person[i].job);

}

printf("\n");

printf("No. Name sex job class/position\n");

for(i=0;i2;i++)

{

if(person[i].job=='s')

printf("%-6d%-10s%-3c%-3c%-6d\n",person[i].num,person[i].name,person[i].sex,person[i].job,person[i].category.banji);//你的程序少些了一個%-3c

else

printf("%-6d%-10s%-3c%-3c%-6s\n",person[i].num,person[i].name,person[i].sex,person[i].job,person[i].category.position);//你的程序少些了一個%-3c

}

}

程序已經(jīng)在VC++中測試過了是真確的!

希望對朋友你有幫助!

C語言共同體問題

首先這個是共用體,所以各個變量公用一段內(nèi)存,你s-i[0]=0x39;s-i[1]=0x38;賦值以后,對應(yīng)的該段內(nèi)存最后占8個字節(jié)(兩個int,根據(jù)編譯器來確定)的區(qū)域被賦值,char型占一個字節(jié),你輸出c[0],也就是第一個字節(jié)的數(shù)據(jù)被輸出。而整形數(shù)據(jù)占的4個字節(jié),在存儲時是低位在前的,比如0x11121314.在存儲時會被先讀取0x14放在第一個字節(jié)0x13第二個字節(jié),依次下去,所以0x39相當于在前四個字節(jié)的地址中存為0x39,0x00,0x00,0x00.這樣你讀取第一個字節(jié)的時候就是0x39了。

c語言中的共用體是什么?

所謂共用體類型是指將不同的數(shù)據(jù)項組織成一個整體,它們在內(nèi)存中占用同一段存儲單元。其定義形式為:

union 共用體名

{成員表列};

union data

{

int a ;

float b;

doublec;

chard;

}obj;

該形式定義了一個共用體數(shù)據(jù)類型union data ,定義了共用體數(shù)據(jù)類型變量obj。共用體數(shù)據(jù)類型與結(jié)構(gòu)體在形式上非常相似,但其表示的含義及存儲是完全不同的。先讓我們看一個小例子。

union data /*共用體*/

{

int a;

float b;

double c;

char d;

}mm;

struct stud /*結(jié)構(gòu)體* /

{

int a;

float b;

double c;

char d;

};

main( )

{

struct stud student;

printf("%d,%d",sizeof(struct stud),sizeof(union data));

}

運行程序輸出:

15,8

程序的輸出說明結(jié)構(gòu)體類型所占的內(nèi)存空間為其各成員所占存儲空間之和。而形同結(jié)構(gòu)體的共用體類型實際占用存儲空間為其最長的成員所占的存儲空間。

對共用體的成員的引用與結(jié)構(gòu)體成員的引用相同。但由于共用體各成員共用同一段內(nèi)存空間,使用時,根據(jù)需要使用其中的某一個成員。從圖中特別說明了共用體的特點,方便程序設(shè)計人員在同一內(nèi)存區(qū)對不同數(shù)據(jù)類型的交替使用,增加靈活性,節(jié)省內(nèi)存。

可以引用共用體變量的成員,其用法與結(jié)構(gòu)體完全相同。若定義共用體類型為:

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,=

程序最后一行的輸出是我們無法預(yù)料的。其原因是連續(xù)做mm.d='W';mm.b=34.2;兩個連續(xù)的賦值語句最終使共用體變量的成員mm.b所占四字節(jié)被寫入34.2,而寫入的字符被覆蓋了,輸出的字符變成了符號“ =”。事實上,字符的輸出是無法得知的,由寫入內(nèi)存的數(shù)據(jù)決定。

例子雖然很簡單,但卻說明了共用體變量的正確用法。

C語言的結(jié)構(gòu)體和共同體的區(qū)別是什么?

結(jié)構(gòu)體(structure)是一種構(gòu)造類型,它是由若干“成員”組成的。每一個成員可以是一個基本數(shù)據(jù)類型或者又是一個構(gòu)造類型,而且每個成員的數(shù)據(jù)類型可以相同也可以不相同。共同體(union)將幾種不同的變量儲存在同一內(nèi)存單元中,也就是使用覆蓋技術(shù),幾個變量互相覆蓋,這種幾個不同的變量共同占用一段內(nèi)存的結(jié)構(gòu),可見二者最大的區(qū)別就是所占用的內(nèi)存,結(jié)構(gòu)體(structure)所占用的內(nèi)存是分量內(nèi)存之和,共同體(union)所占用的內(nèi)存是等于最大的分量的內(nèi)存。

具體來說,結(jié)構(gòu)體(structure)與共同體(union)主要有以下區(qū)別:

1.結(jié)構(gòu)體(structure)與共同體(union)都是由多個不同的數(shù)據(jù)類型成員組成,

但在任何同一時刻,

共同體(union)中只存放了一個被選中的成員,

而結(jié)構(gòu)體(structure)的所有成員都存在。在結(jié)構(gòu)體(structure)中,各成員都占有自己的內(nèi)存空間,它們是同時存在的。一個結(jié)構(gòu)體(structure)變量的總長度等于所有成員長度之和。在共同體(union)中,所有成員不能同時占用它的內(nèi)存空間,它們不能同時存在。共同體(union)變量的長度等于最長的成員的長度。

2.

對于共同體(union)的不同成員賦值,

將會對其它成員重寫,

原來成員的值就不存在了,

而對于結(jié)構(gòu)體(structure)的不同成員賦值是互不影響的。


網(wǎng)站標題:共同體c語言函數(shù) c語言共用體怎么用
轉(zhuǎn)載源于:http://weahome.cn/article/ddggsis.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部