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

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

如何系統(tǒng)學(xué)習(xí)C 語(yǔ)言(中)之 聯(lián)合體、枚舉篇

在C語(yǔ)言中有一個(gè)和結(jié)構(gòu)體非常像的數(shù)據(jù)類(lèi)型,它的名字叫做聯(lián)合體,也被稱(chēng)為共用體或公用體。

主要從事網(wǎng)頁(yè)設(shè)計(jì)、PC網(wǎng)站建設(shè)(電腦版網(wǎng)站建設(shè))、wap網(wǎng)站建設(shè)(手機(jī)版網(wǎng)站建設(shè))、自適應(yīng)網(wǎng)站建設(shè)、程序開(kāi)發(fā)、微網(wǎng)站、微信小程序開(kāi)發(fā)等,憑借多年來(lái)在互聯(lián)網(wǎng)的打拼,我們?cè)诨ヂ?lián)網(wǎng)網(wǎng)站建設(shè)行業(yè)積累了豐富的成都網(wǎng)站制作、做網(wǎng)站、網(wǎng)絡(luò)營(yíng)銷(xiāo)經(jīng)驗(yàn),集策劃、開(kāi)發(fā)、設(shè)計(jì)、營(yíng)銷(xiāo)、管理等多方位專(zhuān)業(yè)化運(yùn)作于一體,具備承接不同規(guī)模與類(lèi)型的建設(shè)項(xiàng)目的能力。

1,聯(lián)合體

1,聯(lián)合體的定義

定義聯(lián)合體需要使用"union" 關(guān)鍵字,格式如下:

union 聯(lián)合體名{
	數(shù)據(jù)類(lèi)型 成員1;
	數(shù)據(jù)類(lèi)型 成員2;
	...
};

2,聯(lián)合體的大小

聯(lián)合體和結(jié)構(gòu)體最大的區(qū)別就是在內(nèi)存存儲(chǔ)上。結(jié)構(gòu)體的每個(gè)成員都有自己獨(dú)立的內(nèi)存空間,結(jié)構(gòu)體大小為所有成員的大小之和(不考慮內(nèi)存對(duì)齊情況)。而聯(lián)合體的所有成員都使用同一段內(nèi)存空間,聯(lián)合體的大小即為聯(lián)合體中最大的那個(gè)成員大小。例如定義下面一個(gè)聯(lián)合體:

union A {
	char a;
	int b;
	double c;
};

最大的成員是double 類(lèi)型的 c ,大小為8個(gè)字節(jié)。因此聯(lián)合體的大小就是c 的大小。同樣,我們也可以用 sizeof運(yùn)算符來(lái)獲取聯(lián)合體A 的大小。

3,聯(lián)合體變量的初始化

因?yàn)槁?lián)合體不能同時(shí)存儲(chǔ)多個(gè)成員的值。所以,在初始化的時(shí)候,只應(yīng)對(duì)一個(gè)成員進(jìn)行初始化,即初始化列表中只放一個(gè)初始值。在默認(rèn)情況下,會(huì)將這個(gè)初始值給聯(lián)合體變量的第一個(gè)成員。例如:

union A a1 = {'A'};

如果想對(duì)其他位置的成員進(jìn)行初始化,則可以通過(guò)指定初始化方式。例如:

union A a1 = {.b=35};	//通過(guò)指定初始化將聯(lián)合體變量a1的成員b初始化值為35

4,聯(lián)合體變量的訪問(wèn)和賦值

對(duì)聯(lián)合體變量中的成員賦值,也是使用成員訪問(wèn)運(yùn)算符,即點(diǎn)運(yùn)算符。如下:

union A a1 = {'A'};
printf("Member a : %c\n",a1.a);	//輸出結(jié)果為 Member a :A

聯(lián)合體應(yīng)用案例

在計(jì)算機(jī)網(wǎng)絡(luò)中,兩臺(tái)計(jì)算機(jī)要想通信,就需要知道彼此的ip 地址。那我們思考一下如何存儲(chǔ)類(lèi)似于“192.168.0.1”的點(diǎn)分格式的ip 地址呢?

下面我們就編寫(xiě)程序,由用戶(hù)輸入一個(gè)ip地址,程序可以將其轉(zhuǎn)換為4 字節(jié)整型類(lèi)型的IP 地址值,并打印輸出:代碼如下:

#include
union IP{
	unsigned char str[4];
	unsigned int digit;
};

int main(){
	union IP ip;	//定義聯(lián)合體變量ip
	printf("Please enter IP address in string format:\n");
	//接收用戶(hù)輸入的IP地址,并將其存儲(chǔ)至字符數(shù)組
	scanf("%d.%d.%d.%d",&ip.str[0],&ip.str[1],&ip.str[2],&ip.str[3]);
	//打印輸出數(shù)字格式的IP地址值
	printf("IP address in digital format is: %u\n",ip.digit);
	return 0;
}

2,枚舉

C語(yǔ)言中,還允許定義枚舉類(lèi)型。使用枚舉類(lèi)型,可以提高程序代碼的健壯性和可讀性,并且枚舉成員屬于常量。

1,枚舉的定義

枚舉的定義格式為:

enum 枚舉名{枚舉成員1,枚舉成員2,...};

例如定義一個(gè)和方向相關(guān)的枚舉類(lèi)型Dir:

enum Dir{up,down,left,right};

前面說(shuō)了,枚舉成員是常量,既然是常量,就應(yīng)該有對(duì)應(yīng)的值,那上面的四個(gè)方位的值又是多少呢?那下面就讓輸出語(yǔ)句告訴我們吧:

printf("up = %d\n",up);
printf("down = %d\n",down);
printf("left = %d\n",left);
printf("right = %d\n",right);
//運(yùn)行結(jié)果如下:
up = 0;
down =1;
left = 2;
right =3;

是否發(fā)現(xiàn)了什么呢?是的,默認(rèn)情況下,枚舉成員是一個(gè)整型值,其第一個(gè)枚舉成員的值為0,而后續(xù)枚舉成員的值為其前一個(gè)枚舉成員的值加1。

那是否能夠自己設(shè)置枚舉成員的值呢?當(dāng)然是可以的。例如:

enum Dir{up,down = 10,left,right};
//同樣通過(guò)printf 語(yǔ)句輸出結(jié)果就是你想的那樣:
up = 0;
down = 10;
left =11;
right =12;

2,枚舉變量的定義

枚舉變量的定義與結(jié)構(gòu)體和聯(lián)合體的變量定義方式類(lèi)似,如通過(guò)如下幾種方式:

enum Dir dir1;	//先定義枚舉,再定義枚舉變量
enum Dir{up=2,down,left,right}dir2;	//在定義枚舉的同時(shí)定義枚舉變量
enum {up=2,down,left,right}dir3;	//定義無(wú)名枚舉類(lèi)型的枚舉變量

最后,C 語(yǔ)言中,可以將枚舉成員視為整型常量,而將枚舉變量視為整型變量。因此,可以將一個(gè)整型值初始化或者賦值給枚舉變量。


網(wǎng)頁(yè)名稱(chēng):如何系統(tǒng)學(xué)習(xí)C 語(yǔ)言(中)之 聯(lián)合體、枚舉篇
網(wǎng)站路徑:http://weahome.cn/article/dsoipic.html

其他資訊

在線咨詢(xún)

微信咨詢(xún)

電話咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部