第09章用戶自己建立數(shù)據(jù)類型_第1頁
第09章用戶自己建立數(shù)據(jù)類型_第2頁
第09章用戶自己建立數(shù)據(jù)類型_第3頁
第09章用戶自己建立數(shù)據(jù)類型_第4頁
第09章用戶自己建立數(shù)據(jù)類型_第5頁
已閱讀5頁,還剩145頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、9.1 定義和使用結(jié)構(gòu)體變量定義和使用結(jié)構(gòu)體變量9.2 使用結(jié)構(gòu)體數(shù)組使用結(jié)構(gòu)體數(shù)組9.3 結(jié)構(gòu)體指針結(jié)構(gòu)體指針9.4 用指針處理鏈表用指針處理鏈表9.5 共用體類型共用體類型9.6 使用枚舉類型使用枚舉類型9.7 用用typedef聲明新類型名聲明新類型名9.1.1 自己建立結(jié)構(gòu)體類型自己建立結(jié)構(gòu)體類型9.1.2 定義結(jié)構(gòu)體類型變量定義結(jié)構(gòu)體類型變量9.1.3 結(jié)構(gòu)體變量的初始化和引用結(jié)構(gòu)體變量的初始化和引用用戶自己建立由不同類型數(shù)據(jù)組成的組用戶自己建立由不同類型數(shù)據(jù)組成的組合型的數(shù)據(jù)結(jié)構(gòu),它稱為合型的數(shù)據(jù)結(jié)構(gòu),它稱為結(jié)構(gòu)體結(jié)構(gòu)體例如,一個(gè)學(xué)生的學(xué)號(hào)、姓名、性別、例如,一個(gè)學(xué)生的學(xué)號(hào)、姓名、

2、性別、年齡、成績(jī)、家庭地址等項(xiàng),是屬于同年齡、成績(jī)、家庭地址等項(xiàng),是屬于同一個(gè)學(xué)生的一個(gè)學(xué)生的,因此,因此組成一個(gè)組合數(shù)據(jù),組成一個(gè)組合數(shù)據(jù),如如student_1的變量,反映它們之間的的變量,反映它們之間的內(nèi)在聯(lián)系內(nèi)在聯(lián)系struct student int num; char name20; char sex; int age; float score; char addr30; ;u由程序設(shè)計(jì)者指定了由程序設(shè)計(jì)者指定了一個(gè)結(jié)構(gòu)體類型一個(gè)結(jié)構(gòu)體類型struct studentu它包括它包括num,name,sex,age,score,addr等不同類等不同類型的成員型的成員聲明一個(gè)結(jié)構(gòu)體類

3、型的一般形式為:聲明一個(gè)結(jié)構(gòu)體類型的一般形式為: struct 結(jié)構(gòu)體名結(jié)構(gòu)體名 成員表列成員表列 ; 類型名類型名 成員名成員名;說明:說明:(1)結(jié)構(gòu)體類型并非只有一種,而是可以設(shè)結(jié)構(gòu)體類型并非只有一種,而是可以設(shè)計(jì)出許多種結(jié)構(gòu)體類型,例如計(jì)出許多種結(jié)構(gòu)體類型,例如struct teacherstruct workerstruct date等結(jié)構(gòu)體類型等結(jié)構(gòu)體類型u各自包含不同的成員各自包含不同的成員說明:說明:(2) 成員可以屬于另一個(gè)結(jié)構(gòu)體類型。成員可以屬于另一個(gè)結(jié)構(gòu)體類型。 struct date int month; int day; int year; ;struct stu i

4、nt num;char name20; char sex;int age; struct date birthday; char addr30; ;說明:說明:(2) 成員可以屬于另一個(gè)結(jié)構(gòu)體類型。成員可以屬于另一個(gè)結(jié)構(gòu)體類型。 num name sex agebirthdayaddrmonth day year前面只是建立了一個(gè)結(jié)構(gòu)體類型,它相前面只是建立了一個(gè)結(jié)構(gòu)體類型,它相當(dāng)于一個(gè)模型,并沒有定義變量,其中當(dāng)于一個(gè)模型,并沒有定義變量,其中并無具體數(shù)據(jù),系統(tǒng)對(duì)之也不分配存儲(chǔ)并無具體數(shù)據(jù),系統(tǒng)對(duì)之也不分配存儲(chǔ)單元。單元。相當(dāng)于設(shè)計(jì)好了圖紙,但并未建成具體相當(dāng)于設(shè)計(jì)好了圖紙,但并未建成具體的

5、房屋。為了能在程序中使用結(jié)構(gòu)體類的房屋。為了能在程序中使用結(jié)構(gòu)體類型的數(shù)據(jù),應(yīng)當(dāng)定義結(jié)構(gòu)體類型的變量型的數(shù)據(jù),應(yīng)當(dāng)定義結(jié)構(gòu)體類型的變量,并在其中存放具體的數(shù)據(jù)。,并在其中存放具體的數(shù)據(jù)。1. 先聲明結(jié)構(gòu)體類型,再定義該類型變量先聲明結(jié)構(gòu)體類型,再定義該類型變量聲明結(jié)構(gòu)體類型聲明結(jié)構(gòu)體類型struct student,可可以用它來定義變量以用它來定義變量 struct student student1,student2;結(jié)構(gòu)體類型名結(jié)構(gòu)體類型名結(jié)構(gòu)體變量名結(jié)構(gòu)體變量名 1. 先聲明結(jié)構(gòu)體類型,再定義該類型變量先聲明結(jié)構(gòu)體類型,再定義該類型變量聲明結(jié)構(gòu)體類型聲明結(jié)構(gòu)體類型struct studen

6、t,可可以用它來定義變量以用它來定義變量 struct student student1,student2;10001 zhang xin m 19 90.5 shanghaistudent110002wang lif 2098beijingstudent22.在聲明類型的同時(shí)定義變量在聲明類型的同時(shí)定義變量struct student int num; char name20; char sex; int age; float score; char addr30; student1,student2;3. 不指定類型名而直接定義結(jié)構(gòu)體類型變量不指定類型名而直接定義結(jié)構(gòu)體類型變量其一般形式為

7、其一般形式為: struct 成員表列成員表列 變量名表列變量名表列; 指定了一個(gè)無名的結(jié)構(gòu)體類型指定了一個(gè)無名的結(jié)構(gòu)體類型 。(1) 結(jié)構(gòu)體類型與結(jié)構(gòu)體變量是不同的概結(jié)構(gòu)體類型與結(jié)構(gòu)體變量是不同的概念,不要混同。只能對(duì)變量賦值、存取念,不要混同。只能對(duì)變量賦值、存取或運(yùn)算,而不能對(duì)一個(gè)類型賦值、存取或運(yùn)算,而不能對(duì)一個(gè)類型賦值、存取或運(yùn)算。在編譯時(shí),對(duì)類型是不分配空或運(yùn)算。在編譯時(shí),對(duì)類型是不分配空間的,只對(duì)變量分配空間。間的,只對(duì)變量分配空間。(2) 結(jié)構(gòu)體類型中的成員名可以與程序中的結(jié)構(gòu)體類型中的成員名可以與程序中的變量名相同變量名相同,但二者不代表同一對(duì)象。但二者不代表同一對(duì)象。(3)

8、 對(duì)結(jié)構(gòu)體變量中的成員(即對(duì)結(jié)構(gòu)體變量中的成員(即“域域”),),可以單獨(dú)使用,它的作用與地位相當(dāng)于普可以單獨(dú)使用,它的作用與地位相當(dāng)于普通變量。通變量。 例例9.1 把一個(gè)學(xué)生的信息把一個(gè)學(xué)生的信息(包括學(xué)號(hào)、姓名包括學(xué)號(hào)、姓名、性別、住址、性別、住址)放在一個(gè)結(jié)構(gòu)體變量中,然放在一個(gè)結(jié)構(gòu)體變量中,然后輸出這個(gè)學(xué)生的信息。后輸出這個(gè)學(xué)生的信息。解題思路:解題思路:u自己建立一個(gè)結(jié)構(gòu)體類型,包括有關(guān)學(xué)生信息自己建立一個(gè)結(jié)構(gòu)體類型,包括有關(guān)學(xué)生信息的各成員的各成員u用它定義結(jié)構(gòu)體變量,同時(shí)賦以初值用它定義結(jié)構(gòu)體變量,同時(shí)賦以初值u輸出該結(jié)構(gòu)體變量的各成員輸出該結(jié)構(gòu)體變量的各成員#include

9、int main()struct student long int num; char name20; char sex; char addr20; a=10101,“l(fā)i lin”,m, “123 beijing road”; printf(no.:%ldnname:%sn sex:%cnaddress:%sn, a.num,,a.sex,a.addr); return 0; #include int main()struct student long int num; char name20; char sex; char addr20; a=10101,“l(fā)i lin”,m,

10、 “123 beijing road”; printf(no.:%ldnname:%sn sex:%cnaddress:%sn, a.num,,a.sex,a.addr); return 0; #include int main()struct student long int num; char name20; char sex; char addr20; a=10101,“l(fā)i lin”,m, “123 beijing road”; a.num=10010; 對(duì)對(duì)printf(“%sn”,a); 不對(duì)不對(duì)#include int main()struct student lon

11、g int num; char name20; char sex; char addr20; a=10101,“l(fā)i lin”,m, “123 beijing road”; b=a; 對(duì)對(duì)struct student b;b.num+; 對(duì)對(duì)#include int main()struct student long int num; char name20; char sex; char addr20; a=10101,“l(fā)i lin”,m, “123 beijing road”; scanf(%ld,&a.num); 對(duì)對(duì)printf(%o,&a); 對(duì)對(duì)scanf(“%ld,%s,%c,

12、%sn”,&a); 錯(cuò)錯(cuò)#include int main() struct date int month; int day; int year; ;struct stu int num;char name20; char sex;int age; struct date birthday; char addr30; a,b;a.birthday.month=12; 對(duì)對(duì)a.age=10; b.age=9; 對(duì)對(duì)sum=a.age+b.age; 對(duì)對(duì) 例例9.2 輸入兩個(gè)學(xué)生的學(xué)號(hào)、姓名和成績(jī)輸入兩個(gè)學(xué)生的學(xué)號(hào)、姓名和成績(jī),輸出成績(jī)較高學(xué)生的學(xué)號(hào)、姓名和成績(jī),輸出成績(jī)較高學(xué)生的學(xué)號(hào)、姓名和成績(jī)

13、解題思路:解題思路:(1)定義兩個(gè)結(jié)構(gòu)相同的結(jié)構(gòu)體變量定義兩個(gè)結(jié)構(gòu)相同的結(jié)構(gòu)體變量student1和和student2;(2)分別輸入兩個(gè)學(xué)生的學(xué)號(hào)、姓名和成績(jī);分別輸入兩個(gè)學(xué)生的學(xué)號(hào)、姓名和成績(jī);(3)比較兩個(gè)學(xué)生的成績(jī),如果學(xué)生比較兩個(gè)學(xué)生的成績(jī),如果學(xué)生1的成績(jī)高的成績(jī)高于學(xué)生于學(xué)生2,就輸出學(xué)生,就輸出學(xué)生1的全部信息,如果學(xué)的全部信息,如果學(xué)生生2的成績(jī)高于學(xué)生的成績(jī)高于學(xué)生1,就輸出學(xué)生,就輸出學(xué)生2的全部信的全部信息。如果二者相等,輸出息。如果二者相等,輸出2個(gè)學(xué)生的全部信息個(gè)學(xué)生的全部信息#include int main() struct student int num; c

14、har name20; float score; student1,student2; scanf(%d%s%f,&student1.num, , &student1.score); scanf(“%d%s%f”,&student2.num, , &student2.score); 不能加不能加& printf(the higher score is:n); if (student1.scorestudent2.score) printf(%d %s %6.2fn,student1.num, , student1.s

15、core); else if (student1.scorestudent2.score) printf(%d %s %6.2fn,student2.num, , student2.score); else printf(%d %s %6.2fn,student1.num, , student1.score); printf(%d %s %6.2fn,student2.num, , student2.score); return 0;9.2.1定義結(jié)構(gòu)體數(shù)組定義結(jié)構(gòu)體數(shù)組9.2.2 結(jié)構(gòu)體數(shù)組的應(yīng)用舉例結(jié)構(gòu)體數(shù)組的應(yīng)

16、用舉例 例例9.3 有有3個(gè)候選人,每個(gè)選民只能個(gè)候選人,每個(gè)選民只能投票選一人,要求編一個(gè)統(tǒng)計(jì)選票的投票選一人,要求編一個(gè)統(tǒng)計(jì)選票的程序,先后輸入被選人的名字,最后程序,先后輸入被選人的名字,最后輸出各人得票結(jié)果。輸出各人得票結(jié)果。解題思路:解題思路:u設(shè)一個(gè)結(jié)構(gòu)體數(shù)組,數(shù)組中包含設(shè)一個(gè)結(jié)構(gòu)體數(shù)組,數(shù)組中包含3個(gè)元素個(gè)元素u每個(gè)元素中的信息應(yīng)包括候選人的姓名每個(gè)元素中的信息應(yīng)包括候選人的姓名(字符型字符型)和得票數(shù)和得票數(shù)(整型整型)u輸入被選人的姓名,然后與數(shù)組元素中的輸入被選人的姓名,然后與數(shù)組元素中的“姓名姓名”成員比較,如果相同,就給這個(gè)成員比較,如果相同,就給這個(gè)元素中的元素中的“

17、得票數(shù)得票數(shù)”成員的值加成員的值加1u輸出所有元素的信息輸出所有元素的信息#include #include struct person char name20; int count; leader3=“l(fā)i”,0,“zhang”,0,“sun”,0; 全局的結(jié)構(gòu)體數(shù)組全局的結(jié)構(gòu)體數(shù)組name countleader0li0zhang0sun0int main() int i,j; char leader_name20; for (i=1;i=10;i+) scanf(“%s”,leader_name); for(j=0;j3;j+) if(strcmp(leader_name, leader

18、)=0) leaderj.count+; for(i=0;i3;i+) printf(%5s:%dn“,, leaderi.count); return 0;leaderj.count=leaderj.count+1;int main() int i,j; char leader_name20; for (i=1;i=10;i+) scanf(“%s”,leader_name); for(j=0;j3;j+) if(strcmp(leader_name, )=0) leaderj.count+; for(i=0;i3;i+) prin

19、tf(%5s:%dn“,, leaderi.count); return 0;說明:說明:(1)定義結(jié)構(gòu)體數(shù)組一般形式是定義結(jié)構(gòu)體數(shù)組一般形式是 struct 結(jié)構(gòu)體名結(jié)構(gòu)體名 成員表列成員表列 數(shù)組名數(shù)組名數(shù)組長(zhǎng)度數(shù)組長(zhǎng)度; 先聲明一個(gè)結(jié)構(gòu)體類型,然后再用此類型定先聲明一個(gè)結(jié)構(gòu)體類型,然后再用此類型定義結(jié)構(gòu)體數(shù)組:義結(jié)構(gòu)體數(shù)組: 結(jié)構(gòu)體類型結(jié)構(gòu)體類型 數(shù)組名數(shù)組名數(shù)組長(zhǎng)度數(shù)組長(zhǎng)度; 如:如: struct person leader3; 說明:說明:(2)對(duì)結(jié)構(gòu)體數(shù)組初始化的形式是在定義數(shù)對(duì)結(jié)構(gòu)體數(shù)組初始化的形式是在定義數(shù)組的后面加上:組的后面加上:初值表列初值表列;

20、 如:如:struct person leader3= li,0,zhang,0,fun,0; 例例9.4 有有n個(gè)學(xué)生的信息個(gè)學(xué)生的信息(包括學(xué)號(hào)、包括學(xué)號(hào)、姓名、成績(jī)姓名、成績(jī)),要求按照成績(jī)的高低順,要求按照成績(jī)的高低順序輸出各學(xué)生的信息。序輸出各學(xué)生的信息。解題思路:用結(jié)構(gòu)體數(shù)組存放解題思路:用結(jié)構(gòu)體數(shù)組存放n個(gè)學(xué)生個(gè)學(xué)生信息,采用選擇法對(duì)各元素進(jìn)行排序信息,采用選擇法對(duì)各元素進(jìn)行排序(進(jìn)行比較的是各元素中的成績(jī)進(jìn)行比較的是各元素中的成績(jī))。#include struct student int num; char name20; float score; ; int main() s

21、truct student stu5=10101,zhang,78 , 10103,wang,98.5, 10106,li, 86 , 10108,“l(fā)ing”, 73.5, 10110,“fun”, 100 ; struct student temp; const int n = 5 ; int i,j,k;常變量常變量若人數(shù)變?yōu)槿羧藬?shù)變?yōu)?030#include struct student int num; char name20; float score; ; int main() struct student stu5=10101,zhang,78 , 10103,wang,98.5

22、, 10106,li, 86 , 10108,“l(fā)ing”, 73.5, 10110,“fun”, 100 ; struct student temp; const int n = 5 ; int i,j,k;#define n 5注意注意temp的類型的類型 printf(the order is:n); for(i=0;in-1;i+) k=i; for(j=i+1;jstuk.score) k=j; temp=stuk; stuk=stui; stui=temp; for(i=0;in;i+) printf(%6d %8s %6.2fn, stui.num,,stui.

23、score); printf(n); return 0;寫法上與普通變量一致寫法上與普通變量一致9.3.1 指向結(jié)構(gòu)體變量的指針指向結(jié)構(gòu)體變量的指針9.3.2 指向結(jié)構(gòu)體數(shù)組的指針指向結(jié)構(gòu)體數(shù)組的指針9.3.3 用結(jié)構(gòu)體變量和結(jié)構(gòu)體變量的指用結(jié)構(gòu)體變量和結(jié)構(gòu)體變量的指針作函數(shù)參數(shù)針作函數(shù)參數(shù)指向結(jié)構(gòu)體對(duì)象的指針變量既可以指向指向結(jié)構(gòu)體對(duì)象的指針變量既可以指向結(jié)構(gòu)體變量,也可以用來指向結(jié)構(gòu)體數(shù)結(jié)構(gòu)體變量,也可以用來指向結(jié)構(gòu)體數(shù)組中的元素。組中的元素。指針變量的基類型必須與結(jié)構(gòu)體變量的指針變量的基類型必須與結(jié)構(gòu)體變量的類型相同。例如:類型相同。例如: struct student *pt; 例例9

24、.5 通過指向結(jié)構(gòu)體變量的指針變通過指向結(jié)構(gòu)體變量的指針變量輸出結(jié)構(gòu)體變量中成員的信息。量輸出結(jié)構(gòu)體變量中成員的信息。解題思路:在已有的基礎(chǔ)上,本題要解解題思路:在已有的基礎(chǔ)上,本題要解決兩個(gè)問題:決兩個(gè)問題:u怎樣對(duì)結(jié)構(gòu)體變量成員賦值;怎樣對(duì)結(jié)構(gòu)體變量成員賦值;u怎樣通過指向結(jié)構(gòu)體變量的指針訪問結(jié)構(gòu)怎樣通過指向結(jié)構(gòu)體變量的指針訪問結(jié)構(gòu)體變量中成員。體變量中成員。#include #include int main() struct student long num; char name20; char sex; float score; ; struct student stu_1; str

25、uct student * p; p=&stu_1; stu_1.num=10101; strcpy(stu_1.name,“l(fā)i lin”); stu_1.sex=m; stu_1.score=89.5; printf(no.:%ldn”,stu_1.num); printf(name:%sn,stu_1.name); printf(sex:%cn”,stu_1.sex); printf(”score:%5.1fn”,stu_1.score); return 0;stu_110101li linm89.5p struct student stu_1; struct student * p;

26、p=&stu_1; stu_1.num=10101; strcpy(stu_1.name,“l(fā)i lin”); stu_1.sex=m; stu_1.score=89.5; printf(no.:%ldn”,stu_1.num); printf(name:%sn,stu_1.name); printf(sex:%cn”,stu_1.sex); printf(”score:%5.1fn”,stu_1.score); return 0;stu_110101li linm89.5p(*p).num(*p).name(*p).sex(*p).score說明:說明:u為了使用方便和直觀,為了使用方便和直

27、觀,c語言允許把語言允許把(*p).num用用p-num來代替來代替u(*p).name等價(jià)于等價(jià)于p-nameu如果如果p指向一個(gè)結(jié)構(gòu)體變量指向一個(gè)結(jié)構(gòu)體變量stu,以下等價(jià):,以下等價(jià): stu.成員名成員名(如如stu.num) (*p).成員名成員名(如如(*p).num) p-成員名成員名(如如p-num) 例例9.6 有有3個(gè)學(xué)生的信息,放在結(jié)構(gòu)體個(gè)學(xué)生的信息,放在結(jié)構(gòu)體數(shù)組中,要求輸出全部學(xué)生的信息。數(shù)組中,要求輸出全部學(xué)生的信息。解題思路:用指向結(jié)構(gòu)體變量的指針處理解題思路:用指向結(jié)構(gòu)體變量的指針處理(1)聲明聲明struct student,并定義結(jié)構(gòu)體數(shù),并定義結(jié)構(gòu)體數(shù)組組

28、、初始化初始化(2)定義指向定義指向struct student類型指針類型指針p(3)使使p指向數(shù)組首元素,輸出元素中指向數(shù)組首元素,輸出元素中各各信息信息(4)使使p指向下一個(gè)元素,輸出元素中指向下一個(gè)元素,輸出元素中各各信息信息(5)再使再使p指向結(jié)構(gòu)體數(shù)組的下一個(gè)元素,輸指向結(jié)構(gòu)體數(shù)組的下一個(gè)元素,輸出它指向的元素中的有關(guān)信息出它指向的元素中的有關(guān)信息#include struct student int num; char name20; char sex; int age;struct student stu3= 10101,li lin,m,18, 10102,zhang fun

29、,m,19, 10104,wang min,f,20 ;int main() struct student *p; printf( no. name sex agen); for(p=stu;pnum, p-name, p-sex, p-age); return 0;10101li linm1810102 zhang fang m1910104wang minf20stu0stu1stu2int main() struct student *p; printf( no. name sex agen); for(p=stu;pnum, p-name, p-sex, p-age); return

30、0;10101li linm1810102 zhang fang m1910104wang minf20pstu0stu1stu2int main() struct student *p; printf( no. name sex agen); for(p=stu;pnum, p-name, p-sex, p-age); return 0;10101li linm1810102 zhang fang m1910104wang minf20pstu0stu1stu2int main() struct student *p; printf( no. name sex agen); for(p=st

31、u;pnum, p-name, p-sex, p-age); return 0;10101li linm1810102 zhang fang m1910104wang minf20pstu0stu1stu2將一個(gè)結(jié)構(gòu)體變量的值傳遞給另一個(gè)函將一個(gè)結(jié)構(gòu)體變量的值傳遞給另一個(gè)函數(shù),有數(shù),有3個(gè)方法個(gè)方法。(1) 用結(jié)構(gòu)體變量的成員作參數(shù)。用結(jié)構(gòu)體變量的成員作參數(shù)。 例如,用例如,用stu1.num或或作作函數(shù)實(shí)參,將實(shí)參值傳給形參。函數(shù)實(shí)參,將實(shí)參值傳給形參。u用法和用普通變量作實(shí)參是一樣的,屬于用法和用普通變量作實(shí)參是一樣的,屬于“值值傳遞傳遞”方式。方式。u應(yīng)當(dāng)注意實(shí)參與形參

32、的類型保持一致。應(yīng)當(dāng)注意實(shí)參與形參的類型保持一致。(2) 用結(jié)構(gòu)體變量作實(shí)參。用結(jié)構(gòu)體變量作實(shí)參。u用結(jié)構(gòu)體變量作實(shí)參時(shí),將結(jié)構(gòu)體變量所占的用結(jié)構(gòu)體變量作實(shí)參時(shí),將結(jié)構(gòu)體變量所占的內(nèi)存單元的內(nèi)容全部按順序傳遞給形參,形參內(nèi)存單元的內(nèi)容全部按順序傳遞給形參,形參也必須是同類型的結(jié)構(gòu)體變量也必須是同類型的結(jié)構(gòu)體變量u在函數(shù)調(diào)用期間形參也要占用內(nèi)存單元。這種在函數(shù)調(diào)用期間形參也要占用內(nèi)存單元。這種傳遞方式在空間和時(shí)間上開銷較大傳遞方式在空間和時(shí)間上開銷較大u在被調(diào)用函數(shù)期間改變形參(也是結(jié)構(gòu)體變量在被調(diào)用函數(shù)期間改變形參(也是結(jié)構(gòu)體變量)的值,不能返回主調(diào)函數(shù))的值,不能返回主調(diào)函數(shù)u一般較少用這種

33、方法一般較少用這種方法(3)用指向結(jié)構(gòu)體變量(或數(shù)組元素)的用指向結(jié)構(gòu)體變量(或數(shù)組元素)的指針作實(shí)參,將結(jié)構(gòu)體變量(或數(shù)組元指針作實(shí)參,將結(jié)構(gòu)體變量(或數(shù)組元素)的地址傳給形參。素)的地址傳給形參。 例例9.7 有有n個(gè)結(jié)構(gòu)體變量,內(nèi)含學(xué)生學(xué)個(gè)結(jié)構(gòu)體變量,內(nèi)含學(xué)生學(xué)號(hào)、姓名和號(hào)、姓名和3門課程的成績(jī)。要求輸出門課程的成績(jī)。要求輸出平均成績(jī)最高的學(xué)生的信息平均成績(jī)最高的學(xué)生的信息(包括學(xué)號(hào)包括學(xué)號(hào)、姓名、姓名、3門課程成績(jī)和平均成績(jī)門課程成績(jī)和平均成績(jī))。解題思路:將解題思路:將n個(gè)學(xué)生的數(shù)據(jù)表示為結(jié)構(gòu)個(gè)學(xué)生的數(shù)據(jù)表示為結(jié)構(gòu)體數(shù)組。按照功能函數(shù)化的思想,分別用體數(shù)組。按照功能函數(shù)化的思想,分別

34、用3個(gè)函數(shù)來實(shí)現(xiàn)不同的功能:個(gè)函數(shù)來實(shí)現(xiàn)不同的功能:u用用input函數(shù)輸入數(shù)據(jù)和求各學(xué)生平均成績(jī)函數(shù)輸入數(shù)據(jù)和求各學(xué)生平均成績(jī)u用用max函數(shù)找平均成績(jī)最高的學(xué)生函數(shù)找平均成績(jī)最高的學(xué)生u用用print函數(shù)輸出成績(jī)最高學(xué)生的信息函數(shù)輸出成績(jī)最高學(xué)生的信息u在主函數(shù)中先后調(diào)用這在主函數(shù)中先后調(diào)用這3個(gè)函數(shù),用指向結(jié)個(gè)函數(shù),用指向結(jié)構(gòu)體變量的指針作實(shí)參。最后得到結(jié)果。構(gòu)體變量的指針作實(shí)參。最后得到結(jié)果。u本程序本程序假設(shè)假設(shè)n=3#include #define n 3struct student int num; char name20; float score3; float aver; ;

35、4個(gè)成員個(gè)成員輸入前輸入前3個(gè)成員值個(gè)成員值計(jì)算最后成員值計(jì)算最后成員值int main() void input(struct student stu); struct student max(struct student stu); void print(struct student stu); struct student stun,*p=stu; input(p); print(max(p); return 0;void input(struct student stu) int i; printf(請(qǐng)輸入各學(xué)生的信息:請(qǐng)輸入各學(xué)生的信息: 學(xué)號(hào)、姓名、三門課成績(jī)學(xué)號(hào)、姓名、三門課成績(jī)

36、:n); for(i=0;in;i+) scanf(%d %s %f %f %f, &stui.num,, &stui.score0,&stui.score1, &stui.score2); stui.aver=(stui.score0+ stui.score1+stui.score2)/3.0; 輸入第輸入第1個(gè)成員值個(gè)成員值 輸入第輸入第2個(gè)成員值個(gè)成員值輸入第輸入第3個(gè)成員值個(gè)成員值計(jì)算第計(jì)算第4個(gè)成員值個(gè)成員值stu0stu1stu2stu10101li78 89 9888.33i=0void input(struct student stu) int i; prin

37、tf(請(qǐng)輸入各學(xué)生的信息:請(qǐng)輸入各學(xué)生的信息: 學(xué)號(hào)、姓名、三門課成績(jī)學(xué)號(hào)、姓名、三門課成績(jī):n); for(i=0;in;i+) scanf(%d %s %f %f %f, &stui.num,, &stui.score0,&stui.score1, &stui.score2); stui.aver=(stui.score0+ stui.score1+stui.score2)/3.0; 輸入第輸入第1個(gè)成員值個(gè)成員值 輸入第輸入第2個(gè)成員值個(gè)成員值輸入第輸入第3個(gè)成員值個(gè)成員值計(jì)算第計(jì)算第4個(gè)成員值個(gè)成員值stu0stu1stu2stu10101li78 89 9888.3

38、310103wang98.5 87 6984.83i=1void input(struct student stu) int i; printf(請(qǐng)輸入各學(xué)生的信息:請(qǐng)輸入各學(xué)生的信息: 學(xué)號(hào)、姓名、三門課成績(jī)學(xué)號(hào)、姓名、三門課成績(jī):n); for(i=0;in;i+) scanf(%d %s %f %f %f, &stui.num,, &stui.score0,&stui.score1, &stui.score2); stui.aver=(stui.score0+ stui.score1+stui.score2)/3.0; 輸入第輸入第1個(gè)成員值個(gè)成員值 輸入第輸入第2個(gè)成

39、員值個(gè)成員值輸入第輸入第3個(gè)成員值個(gè)成員值計(jì)算第計(jì)算第4個(gè)成員值個(gè)成員值stu0stu1stu2stu10101li78 89 9888.3310103wang98.5 87 6984.8310106sun 88 76.5 8984.5i=2struct student max(struct student stu) int i,m=0; for(i=0;istum.aver) m=i; return stum; stu0stu1stu2stu10101li78 89 9888.3310103wang98.5 87 6984.8310106sun 88 76.5 8984.5最大最大返回返回v

40、oid print(struct student stud) printf(n成績(jī)最高的學(xué)生是成績(jī)最高的學(xué)生是:n);printf(學(xué)號(hào)學(xué)號(hào):%dn姓名姓名:%sn 三門課成績(jī)?nèi)T課成績(jī):%5.1f,%5.1f,%5.1fn 平均成績(jī)平均成績(jī):%6.2fn”, stud.num, ,stud.score0, stud.score1,stud.score2,stud.aver); stud10101li78 89 9888.3310103wang98.5 87 6984.8310106sun 88 76.5 8984.5num namescoreaverstu0stu1stu2

41、以上以上3個(gè)函數(shù)的調(diào)用,情況各不相同:個(gè)函數(shù)的調(diào)用,情況各不相同:u調(diào)用調(diào)用input函數(shù)時(shí),實(shí)參是指針變量,形參是函數(shù)時(shí),實(shí)參是指針變量,形參是結(jié)構(gòu)體數(shù)組,傳遞的是結(jié)構(gòu)體元素的地址,函結(jié)構(gòu)體數(shù)組,傳遞的是結(jié)構(gòu)體元素的地址,函數(shù)無返回值。數(shù)無返回值。u調(diào)用調(diào)用max函數(shù)時(shí),實(shí)參是指針變量,形參是函數(shù)時(shí),實(shí)參是指針變量,形參是結(jié)構(gòu)體數(shù)組,傳遞的是結(jié)構(gòu)體元素的地址,函結(jié)構(gòu)體數(shù)組,傳遞的是結(jié)構(gòu)體元素的地址,函數(shù)的返回值是結(jié)構(gòu)體類型數(shù)據(jù)。數(shù)的返回值是結(jié)構(gòu)體類型數(shù)據(jù)。u調(diào)用調(diào)用print函數(shù)時(shí),實(shí)參是結(jié)構(gòu)體變量,形參函數(shù)時(shí),實(shí)參是結(jié)構(gòu)體變量,形參是結(jié)構(gòu)體變量,傳遞的是結(jié)構(gòu)體變量中各成員是結(jié)構(gòu)體變量,傳遞

42、的是結(jié)構(gòu)體變量中各成員的值,函數(shù)無返回值。的值,函數(shù)無返回值。9.4.1 什么是鏈表什么是鏈表9.4.2 建立簡(jiǎn)單的靜態(tài)鏈表建立簡(jiǎn)單的靜態(tài)鏈表9.4.3 建立動(dòng)態(tài)鏈表建立動(dòng)態(tài)鏈表9.4.4 輸出鏈表輸出鏈表鏈表是一種常見的重要的數(shù)據(jù)結(jié)構(gòu)鏈表是一種常見的重要的數(shù)據(jù)結(jié)構(gòu)它是動(dòng)態(tài)地進(jìn)行存儲(chǔ)分配的一種結(jié)構(gòu)它是動(dòng)態(tài)地進(jìn)行存儲(chǔ)分配的一種結(jié)構(gòu)head12491249a135613561475b1475c10211021d0頭指針頭指針各結(jié)點(diǎn)地址不連續(xù)各結(jié)點(diǎn)地址不連續(xù)各結(jié)點(diǎn)含有兩個(gè)部分各結(jié)點(diǎn)含有兩個(gè)部分表尾表尾鏈表是一種常見的重要的數(shù)據(jù)結(jié)構(gòu)鏈表是一種常見的重要的數(shù)據(jù)結(jié)構(gòu)它是動(dòng)態(tài)地進(jìn)行存儲(chǔ)分配的一種結(jié)構(gòu)它是動(dòng)態(tài)

43、地進(jìn)行存儲(chǔ)分配的一種結(jié)構(gòu)鏈表必須利用指針變量才能實(shí)現(xiàn)鏈表必須利用指針變量才能實(shí)現(xiàn)struct student int num; float score; struct student *next; a,b,c;1010189.510103901010785a結(jié)點(diǎn)結(jié)點(diǎn)b結(jié)點(diǎn)結(jié)點(diǎn)c結(jié)點(diǎn)結(jié)點(diǎn)a.next=&b;b.next=&c;numscorenext 例例9.8 建立一個(gè)如圖所示的簡(jiǎn)單鏈表建立一個(gè)如圖所示的簡(jiǎn)單鏈表,它由,它由3個(gè)學(xué)生數(shù)據(jù)的結(jié)點(diǎn)組成,要求個(gè)學(xué)生數(shù)據(jù)的結(jié)點(diǎn)組成,要求輸出各結(jié)點(diǎn)中的數(shù)據(jù)。輸出各結(jié)點(diǎn)中的數(shù)據(jù)。1010189.510103901010785a結(jié)點(diǎn)結(jié)點(diǎn)b結(jié)點(diǎn)結(jié)點(diǎn)c結(jié)點(diǎn)結(jié)點(diǎn)n

44、umscorenext解題思路:解題思路:1010189.510103901010785a結(jié)點(diǎn)結(jié)點(diǎn)b結(jié)點(diǎn)結(jié)點(diǎn)c結(jié)點(diǎn)結(jié)點(diǎn)numscorenextheadhead=&a;a.next=&b;b.next=&c;nullc.next=null;#include struct student int num; float score; struct student *next;int main() struct student a,b,c,*head,*p; a. num=10101; a.score=89.5; b. num=10103; b.score=90; c. num=10107; c.sc

45、ore=85; head=&a; a.next=&b; b.next=&c; c.next=null; p=head; do printf(“%ld%5.1fn”,p-num,p-score); p=p-next; while(p!=null); return 0; p=head; do printf(“%ld%5.1fn”,p-num,p-score); p=p-next; while(p!=null); return 0;1010189.510103901010785a結(jié)點(diǎn)結(jié)點(diǎn)b結(jié)點(diǎn)結(jié)點(diǎn)c結(jié)點(diǎn)結(jié)點(diǎn)numscorenextheadnullp相當(dāng)于相當(dāng)于p=&b; p=head; do pri

46、ntf(“%ld%5.1fn”,p-num,p-score); p=p-next; while(p!=null); return 0;1010189.510103901010785a結(jié)點(diǎn)結(jié)點(diǎn)b結(jié)點(diǎn)結(jié)點(diǎn)c結(jié)點(diǎn)結(jié)點(diǎn)numscorenextheadnullp相當(dāng)于相當(dāng)于p=&b; p=head; do printf(“%ld%5.1fn”,p-num,p-score); p=p-next; while(p!=null); return 0;1010189.510103901010785a結(jié)點(diǎn)結(jié)點(diǎn)b結(jié)點(diǎn)結(jié)點(diǎn)c結(jié)點(diǎn)結(jié)點(diǎn)numscorenextheadnullp相當(dāng)于相當(dāng)于p=&c; p=head; do

47、 printf(“%ld%5.1fn”,p-num,p-score); p=p-next; while(p!=null); return 0;1010189.510103901010785a結(jié)點(diǎn)結(jié)點(diǎn)b結(jié)點(diǎn)結(jié)點(diǎn)c結(jié)點(diǎn)結(jié)點(diǎn)numscorenextheadnullp相當(dāng)于相當(dāng)于p=&c; p=head; do printf(“%ld%5.1fn”,p-num,p-score); p=p-next; while(p!=null); return 0;1010189.510103901010785a結(jié)點(diǎn)結(jié)點(diǎn)b結(jié)點(diǎn)結(jié)點(diǎn)c結(jié)點(diǎn)結(jié)點(diǎn)numscorenextheadnullp相當(dāng)于相當(dāng)于p=null;靜態(tài)鏈表靜

48、態(tài)鏈表所謂建立動(dòng)態(tài)鏈表是指在程序執(zhí)行過所謂建立動(dòng)態(tài)鏈表是指在程序執(zhí)行過程中從無到有地建立起一個(gè)鏈表,即程中從無到有地建立起一個(gè)鏈表,即一個(gè)一個(gè)地開辟結(jié)點(diǎn)和輸入各結(jié)點(diǎn)數(shù)一個(gè)一個(gè)地開辟結(jié)點(diǎn)和輸入各結(jié)點(diǎn)數(shù)據(jù),并建立起前后相鏈的關(guān)系。據(jù),并建立起前后相鏈的關(guān)系。 例例9.9 寫一函數(shù)建立一個(gè)有寫一函數(shù)建立一個(gè)有3名學(xué)生數(shù)名學(xué)生數(shù)據(jù)的單向據(jù)的單向動(dòng)態(tài)動(dòng)態(tài)鏈表。鏈表。解題思路:解題思路:u定義定義3個(gè)指針變量:個(gè)指針變量:head,p1和和p2,它們都是,它們都是用來指向用來指向struct student類型數(shù)據(jù)類型數(shù)據(jù)struct student *head,*p1,*p2;解題思路:解題思路:u用用

49、malloc函數(shù)開辟第一個(gè)結(jié)點(diǎn),并使函數(shù)開辟第一個(gè)結(jié)點(diǎn),并使p1和和p2指向它指向它p1p1=p2=(struct student*)malloc(len);p2解題思路:解題思路:u讀入一個(gè)學(xué)生的數(shù)據(jù)給讀入一個(gè)學(xué)生的數(shù)據(jù)給p1所指的第一個(gè)結(jié)點(diǎn)所指的第一個(gè)結(jié)點(diǎn)p1scanf(%ld,%f,&p1-num,&p1-score);p21010189.5解題思路:解題思路:u讀入一個(gè)學(xué)生的數(shù)據(jù)給讀入一個(gè)學(xué)生的數(shù)據(jù)給p1所指的第一個(gè)結(jié)點(diǎn)所指的第一個(gè)結(jié)點(diǎn)u使使head也指向新開辟的結(jié)點(diǎn)也指向新開辟的結(jié)點(diǎn)headp1p2scanf(%ld,%f,&p1-num,&p1-score);1010189.5解題

50、思路:解題思路:u再開辟另一個(gè)結(jié)點(diǎn)并使再開辟另一個(gè)結(jié)點(diǎn)并使p1指向它,接著輸入該指向它,接著輸入該結(jié)點(diǎn)的數(shù)據(jù)結(jié)點(diǎn)的數(shù)據(jù)headp1p21010189.5解題思路:解題思路:u再開辟另一個(gè)結(jié)點(diǎn)并使再開辟另一個(gè)結(jié)點(diǎn)并使p1指向它,接著輸入該指向它,接著輸入該結(jié)點(diǎn)的數(shù)據(jù)結(jié)點(diǎn)的數(shù)據(jù)headp1p21010189.5p1=(struct student*)malloc(len);scanf(%ld,%f,&p1-num,&p1-score);1010390解題思路:解題思路:u使第一個(gè)結(jié)點(diǎn)的使第一個(gè)結(jié)點(diǎn)的next成員指向第二個(gè)結(jié)點(diǎn)成員指向第二個(gè)結(jié)點(diǎn),即,即連接第一個(gè)結(jié)點(diǎn)與第二個(gè)結(jié)點(diǎn)連接第一個(gè)結(jié)點(diǎn)與第二個(gè)

51、結(jié)點(diǎn)u使使p2指向剛才建立的結(jié)點(diǎn)指向剛才建立的結(jié)點(diǎn)headp1p21010189.5p2-next=p1;1010390解題思路:解題思路:u使第一個(gè)結(jié)點(diǎn)的使第一個(gè)結(jié)點(diǎn)的next成員指向第二個(gè)結(jié)點(diǎn)成員指向第二個(gè)結(jié)點(diǎn),即,即連接第一個(gè)結(jié)點(diǎn)與第二個(gè)結(jié)點(diǎn)連接第一個(gè)結(jié)點(diǎn)與第二個(gè)結(jié)點(diǎn)u使使p2指向剛才建立的結(jié)點(diǎn)指向剛才建立的結(jié)點(diǎn)headp1p21010189.5p2-next=p1;1010390p2=p1;解題思路:解題思路:u再開辟另一個(gè)結(jié)點(diǎn)并使再開辟另一個(gè)結(jié)點(diǎn)并使p1指向它,接著輸入該指向它,接著輸入該結(jié)點(diǎn)的數(shù)據(jù)結(jié)點(diǎn)的數(shù)據(jù)headp1p21010189.51010390解題思路:解題思路:u再開辟

52、另一個(gè)結(jié)點(diǎn)并使再開辟另一個(gè)結(jié)點(diǎn)并使p1指向它,接著輸入該指向它,接著輸入該結(jié)點(diǎn)的數(shù)據(jù)結(jié)點(diǎn)的數(shù)據(jù)headp1p21010189.51010390p1=(struct student*)malloc(len);scanf(%ld,%f,&p1-num,&p1-score);1010785解題思路:解題思路:u使第使第二二個(gè)結(jié)點(diǎn)的個(gè)結(jié)點(diǎn)的next成員指向第成員指向第三三個(gè)結(jié)點(diǎn)個(gè)結(jié)點(diǎn),即,即連接第二個(gè)結(jié)點(diǎn)與第三個(gè)結(jié)點(diǎn)連接第二個(gè)結(jié)點(diǎn)與第三個(gè)結(jié)點(diǎn)u使使p2指向剛才建立的結(jié)點(diǎn)指向剛才建立的結(jié)點(diǎn)headp1p21010189.510103901010785p2-next=p1;解題思路:解題思路:u使第使第二

53、二個(gè)結(jié)點(diǎn)的個(gè)結(jié)點(diǎn)的next成員指向第成員指向第三三個(gè)結(jié)點(diǎn)個(gè)結(jié)點(diǎn),即,即連接第二個(gè)結(jié)點(diǎn)與第三個(gè)結(jié)點(diǎn)連接第二個(gè)結(jié)點(diǎn)與第三個(gè)結(jié)點(diǎn)u使使p2指向剛才建立的結(jié)點(diǎn)指向剛才建立的結(jié)點(diǎn)headp1p21010189.510103901010785p2-next=p1;p2=p1;解題思路:解題思路:u再開辟另一個(gè)結(jié)點(diǎn)并使再開辟另一個(gè)結(jié)點(diǎn)并使p1指向它,接著輸入該指向它,接著輸入該結(jié)點(diǎn)的數(shù)據(jù)結(jié)點(diǎn)的數(shù)據(jù)headp1p21010189.5101039010107850解題思路:解題思路:u再開辟另一個(gè)結(jié)點(diǎn)并使再開辟另一個(gè)結(jié)點(diǎn)并使p1指向它,接著輸入該指向它,接著輸入該結(jié)點(diǎn)的數(shù)據(jù)結(jié)點(diǎn)的數(shù)據(jù)headp1p2101018

54、9.5101039010107850p1=(struct student*)malloc(len);scanf(%ld,%f,&p1-num,&p1-score);解題思路:解題思路:u輸入的學(xué)號(hào)為輸入的學(xué)號(hào)為0,表示建立鏈表的過程完成,表示建立鏈表的過程完成,該結(jié)點(diǎn)不應(yīng)連接到鏈表中該結(jié)點(diǎn)不應(yīng)連接到鏈表中headp1p21010189.5101039010107850nullp2-next=null;#include #include #define len sizeof(struct student)struct student long num; float score; struct s

55、tudent *next;int n;struct student類型數(shù)據(jù)的長(zhǎng)度類型數(shù)據(jù)的長(zhǎng)度struct student *creat(void) struct student *head,*p1,*p2; n=0; p1=p2=( struct student*) malloc(len); scanf(“%ld,%f”,&p1-num,&p1-score); head=null; while(p1-num!=0) n=n+1; if(n=1) head=p1; else p2-next=p1; p2=p1; p1=(struct student*)malloc(len); scanf(“%

56、ld,%f”,&p1-num,&p1-score); p2-next=null; return(head);p1總是總是開辟開辟新新結(jié)點(diǎn)結(jié)點(diǎn)p2總是總是指向最后結(jié)點(diǎn)指向最后結(jié)點(diǎn)用用p2和和p1連接連接兩個(gè)兩個(gè)結(jié)點(diǎn)結(jié)點(diǎn)int main() struct student *pt; pt=creat(); printf(“nnum:%ldnscore:%5.1fn”, pt-num,pt-score); return 0;例例9.10 編寫一個(gè)輸出鏈表的函數(shù)編寫一個(gè)輸出鏈表的函數(shù)print。100167.5100387100599nullp解題思路:解題思路:u輸出輸出p所指的結(jié)點(diǎn)所指的結(jié)點(diǎn)u使使p

57、后移一個(gè)結(jié)點(diǎn)后移一個(gè)結(jié)點(diǎn)p100167.5100387100599nullprintf(%ld %5.1fn,p-num,p-score);100167.5100387100599nullp=p-next;解題思路:解題思路:u輸出輸出p所指的結(jié)點(diǎn)所指的結(jié)點(diǎn)u使使p后移一個(gè)結(jié)點(diǎn)后移一個(gè)結(jié)點(diǎn)printf(%ld %5.1fn,p-num,p-score);p100167.5100387100599null解題思路:解題思路:u輸出輸出p所指的所指的新新結(jié)點(diǎn)結(jié)點(diǎn)u使使p后移一個(gè)結(jié)點(diǎn)后移一個(gè)結(jié)點(diǎn)printf(%ld %5.1fn,p-num,p-score);p100167.510038710059

58、9nullp=p-next;解題思路:解題思路:u輸出輸出p所指的所指的新新結(jié)點(diǎn)結(jié)點(diǎn)u使使p后移一個(gè)結(jié)點(diǎn)后移一個(gè)結(jié)點(diǎn)printf(%ld %5.1fn,p-num,p-score);p100167.5100387100599nullp=p-next;解題思路:解題思路:u輸出輸出p所指的所指的新新結(jié)點(diǎn)結(jié)點(diǎn)u使使p后移一個(gè)結(jié)點(diǎn)后移一個(gè)結(jié)點(diǎn)printf(%ld %5.1fn,p-num,p-score);p相當(dāng)于相當(dāng)于p=null;void print(struct student *p) printf(nthese %d records are:n,n); if(p!=null) do prin

59、tf(%ld %5.1fn, p-num,p-score); p=p-next; while(p!=null);9.5.1 什么是共用體類型什么是共用體類型9.5.2 引用共用體變量的方式引用共用體變量的方式9.5.3 共用體類型數(shù)據(jù)的特點(diǎn)共用體類型數(shù)據(jù)的特點(diǎn)有時(shí)想用同一段內(nèi)存單元存放不同類有時(shí)想用同一段內(nèi)存單元存放不同類型的變量。型的變量。使幾個(gè)不同的變量共享同一段內(nèi)存的使幾個(gè)不同的變量共享同一段內(nèi)存的結(jié)構(gòu),稱為結(jié)構(gòu),稱為 “共用體共用體”類型的結(jié)構(gòu)。類型的結(jié)構(gòu)。1000100110021003字符字符ch整整 型型 變變 量量 i實(shí)實(shí) 型型 變變 量量 f定義共用體類型變量的一般形式為:定

60、義共用體類型變量的一般形式為:union共用體名共用體名 成員表列成員表列變量表列;變量表列; 例如:例如:union data int i; char ch; float f; a,b,c; union data int i; char ch; float f; ;union data a,b,c; “共用體共用體”與與“結(jié)構(gòu)體結(jié)構(gòu)體”的定義形式相似的定義形式相似,但它們的含義是不同的。但它們的含義是不同的。結(jié)構(gòu)體變量所占內(nèi)存長(zhǎng)度是各成員占的內(nèi)結(jié)構(gòu)體變量所占內(nèi)存長(zhǎng)度是各成員占的內(nèi)存長(zhǎng)度之和存長(zhǎng)度之和,每個(gè)成員分別占有其自己的每個(gè)成員分別占有其自己的內(nèi)存單元。而共用體變量所占的內(nèi)存長(zhǎng)度內(nèi)存單元

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論