你現(xiàn)在所處的位置在首頁_第1頁
你現(xiàn)在所處的位置在首頁_第2頁
你現(xiàn)在所處的位置在首頁_第3頁
你現(xiàn)在所處的位置在首頁_第4頁
你現(xiàn)在所處的位置在首頁_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、你現(xiàn)在所處的位置在:首頁C語言教學(xué)幻燈片版第九章 結(jié)構(gòu)體與共用體第九章 結(jié)構(gòu)體與共用體結(jié)構(gòu)體結(jié)構(gòu)體變量的定義結(jié)構(gòu)體變量的引用結(jié)構(gòu)體變量的初始化結(jié)構(gòu)體數(shù)組結(jié)構(gòu)體和指針共用體你現(xiàn)在所處的位置在:首頁C語言教學(xué)幻燈片版第九章 結(jié)構(gòu)體與共用體9.1 結(jié)構(gòu)體&結(jié)構(gòu)體是一種構(gòu)造數(shù)據(jù)類型&用途:把不同類型的數(shù)據(jù)組合成一個(gè)整體-自定義數(shù)據(jù)類型結(jié)構(gòu)體類型定義struct 結(jié)構(gòu)體名 類型標(biāo)識(shí)符 成員名; 類型標(biāo)識(shí)符 成員名; .;成員類型可以是基本型或構(gòu)造型struct是關(guān)鍵字,不能省略合法標(biāo)識(shí)符可省:無名結(jié)構(gòu)體你現(xiàn)在所處的位置在:首頁C語言教學(xué)幻燈片版第九章 結(jié)構(gòu)體與共用體例 struct st

2、udent int num; char name20; char sex; int age; float score; char addr30; ; namenumsexagescoreaddr2字節(jié)2字節(jié)20字節(jié)1字節(jié)4字節(jié)30字節(jié).結(jié)構(gòu)體類型定義描述結(jié)構(gòu)的組織形式,不分配內(nèi)存結(jié)構(gòu)體類型定義的作用域例子圖解你現(xiàn)在所處的位置在:首頁C語言教學(xué)幻燈片版第九章 結(jié)構(gòu)體與共用體先定義結(jié)構(gòu)體類型,再定義結(jié)構(gòu)體變量一般形式: struct 結(jié)構(gòu)體名 類型標(biāo)識(shí)符 成員名; 類型標(biāo)識(shí)符 成員名; .;struct 結(jié)構(gòu)體名 變量名表列;9.2 結(jié)構(gòu)體變量的定義你現(xiàn)在所處的位置在:首頁C語言教學(xué)幻燈片版第九章

3、 結(jié)構(gòu)體與共用體一般形式:struct 結(jié)構(gòu)體名 類型標(biāo)識(shí)符 成員名; 類型標(biāo)識(shí)符 成員名; .變量名表列;例 struct student int num; char name20; char sex; int age; float score; char addr30; stu1,stu2; 定義結(jié)構(gòu)體類型的同時(shí)定義結(jié)構(gòu)體變量你現(xiàn)在所處的位置在:首頁C語言教學(xué)幻燈片版第九章 結(jié)構(gòu)體與共用體一般形式:struct 類型標(biāo)識(shí)符 成員名; 類型標(biāo)識(shí)符 成員名; .變量名表列;例 struct int num; char name20; char sex; int age; float score

4、; char addr30; stu1,stu2; 用無名結(jié)構(gòu)體直接定義變量只能一次直接定義結(jié)構(gòu)體變量你現(xiàn)在所處的位置在:首頁C語言教學(xué)幻燈片版第九章 結(jié)構(gòu)體與共用體結(jié)構(gòu)體類型與結(jié)構(gòu)體變量概念不同類型:不分配內(nèi)存; 變量:分配內(nèi)存類型:不能賦值、存取、運(yùn)算; 變量:可以結(jié)構(gòu)體可嵌套結(jié)構(gòu)體成員名與程序中變量名可相同,不會(huì)混淆結(jié)構(gòu)體類型及變量的作用域與生存期說明:你現(xiàn)在所處的位置在:首頁C語言教學(xué)幻燈片版第九章 結(jié)構(gòu)體與共用體引用規(guī)則 結(jié)構(gòu)體變量不能整體引用,只能引用變量成員可以將一個(gè)結(jié)構(gòu)體變量賦值給另一個(gè)結(jié)構(gòu)體變量結(jié)構(gòu)體嵌套時(shí)逐級(jí)引用成員(分量)運(yùn)算符優(yōu)先級(jí): 1結(jié)合性:從左向右引用方式: 結(jié)構(gòu)

5、體變量名.成員名9.3 結(jié)構(gòu)體變量的引用你現(xiàn)在所處的位置在:首頁C語言教學(xué)幻燈片版第九章 結(jié)構(gòu)體與共用體形式一:struct 結(jié)構(gòu)體名 類型標(biāo)識(shí)符 成員名; 類型標(biāo)識(shí)符 成員名; .;struct 結(jié)構(gòu)體名 結(jié)構(gòu)體變量=初始數(shù)據(jù);例 struct student int num; char name20; char sex; int age; char addr30; ; struct student stu1=112,“Wang Lin”,M,19, “200 Beijing Road”;9.4 結(jié)構(gòu)體變量的初始化你現(xiàn)在所處的位置在:首頁C語言教學(xué)幻燈片版第九章 結(jié)構(gòu)體與共用體struct

6、結(jié)構(gòu)體名 類型標(biāo)識(shí)符 成員名; 類型標(biāo)識(shí)符 成員名; .結(jié)構(gòu)體變量=初始數(shù)據(jù);例 struct student int num; char name20; char sex; int age; char addr30; stu1=112,“Wang Lin”,M,19, “200 Beijing Road”; 結(jié)構(gòu)體變量的初始化形式二:你現(xiàn)在所處的位置在:首頁C語言教學(xué)幻燈片版第九章 結(jié)構(gòu)體與共用體struct 類型標(biāo)識(shí)符 成員名; 類型標(biāo)識(shí)符 成員名; .結(jié)構(gòu)體變量=初始數(shù)據(jù);例 struct int num; char name20; char sex; int age; char add

7、r30; stu1=112,“Wang Lin”,M,19, “200 Beijing Road”; 結(jié)構(gòu)體變量的初始化形式三:你現(xiàn)在所處的位置在:首頁C語言教學(xué)幻燈片版第九章 結(jié)構(gòu)體與共用體結(jié)構(gòu)體數(shù)組的定義三種形式:形式一: struct student int num; char name20; char sex; int age; ;struct student stu2;形式二: struct student int num; char name20; char sex; int age; stu2;形式三: struct int num; char name20; char sex;

8、 int age; stu2;numnamesexagenumnamesexagestu0stu125B9.5 結(jié)構(gòu)體數(shù)組你現(xiàn)在所處的位置在:首頁C語言教學(xué)幻燈片版第九章 結(jié)構(gòu)體與共用體例 struct int num; char name20; char sex; int age; stu =,;結(jié)構(gòu)體數(shù)組引用引用方式: 結(jié)構(gòu)體數(shù)組名下標(biāo).成員名 struct student int num; char name20; char sex; int age; str3;stu1.age+;strcpy(,”ZhaoDa”);結(jié)構(gòu)體數(shù)組初始化你現(xiàn)在所處的位置在:首頁C語言教學(xué)幻

9、燈片版第九章 結(jié)構(gòu)體與共用體struct person char name20; int count;leader3=“Li”,0,“Zhang”,0,”Wang“,0; 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;i成員名結(jié)構(gòu)體變量名.成員名指向運(yùn)算符優(yōu)先級(jí): 1結(jié)合方向:從左向右例 指向結(jié)構(gòu)體的指針變量例 int n; int *p

10、=&n; *p=10; n=10struct student stu1;struct student *p=&stu1;stu1.num=101; (*p).num=1019.6 結(jié)構(gòu)體和指針你現(xiàn)在所處的位置在:首頁C語言教學(xué)幻燈片版第九章 結(jié)構(gòu)體與共用體用結(jié)構(gòu)體變量的成員作參數(shù)-值傳遞用指向結(jié)構(gòu)體變量或數(shù)組的指針作參數(shù)-地址傳遞用結(jié)構(gòu)體變量作參數(shù)-多值傳遞,效率低用指向結(jié)構(gòu)體的指針作函數(shù)參數(shù)你現(xiàn)在所處的位置在:首頁C語言教學(xué)幻燈片版第九章 結(jié)構(gòu)體與共用體struct data int a, b, c; ;main() void func(struct data); struc

11、t data arg; arg.a=27; arg.b=3; arg.c=arg.a+arg.b; printf(arg.a=%d arg.b=%d arg.c=%dn,arg.a,arg.b,arg.c); printf(Call Func().n); func(arg); printf(arg.a=%d arg.b=%d arg.c=%dn,arg.a,arg.b,arg.c);void func(struct data parm) printf(parm.a=%d parm.b=%d parm.c=%dn,parm.a,parm.b,parm.c); printf(Process.n);

12、 parm.a=18; parm.b=5; parm.c=parm.a*parm.b; printf(parm.a=%d parm.b=%d parm.c=%dn,parm.a,parm.b,parm.c); printf(Return.n);arga :27b: 3c :30(main)(func)parma :27b: 3c :30copyarga :27b: 3c :30(main)(func)parma :18b: 5c :90arga :27b: 3c :30(main)arga :27b: 3c :30(main)例 用結(jié)構(gòu)體變量作函數(shù)參數(shù)(1)你現(xiàn)在所處的位置在:首頁C語言教學(xué)幻

13、燈片版第九章 結(jié)構(gòu)體與共用體struct data int a, b, c; ;main() void func(struct data *parm); struct data arg; arg.a=27; arg.b=3; arg.c=arg.a+arg.b; printf(arg.a=%d arg.b=%d arg.c=%dn,arg.a,arg.b,arg.c); printf(Call Func().n); func(&arg); printf(arg.a=%d arg.b=%d arg.c=%dn,arg.a,arg.b,arg.c);void func(struct dat

14、a *parm) printf(parm-a=%d parm-b=%d parm-c=%dn,parm-a,parm-b,parm-c); printf(Process.n); parm-a=18; parm-b=5; parm-c=parm-a*parm-b; printf(parm-a=%d parm-b=%d parm-c=%dn,parm-a,parm-b,parm-c); printf(Return.n);arga :18b: 5c :90(main)arga :27b: 3c :30(main)arga :27b: 3c :30(main)(func)parm*arga :18b:

15、 5c :90(main)(func)parm*例 用結(jié)構(gòu)體指針變量作函數(shù)參數(shù)(2)你現(xiàn)在所處的位置在:首頁C語言教學(xué)幻燈片版第九章 結(jié)構(gòu)體與共用體&構(gòu)造數(shù)據(jù)類型,也叫聯(lián)合體&用途:使幾個(gè)不同類型的變量共占一段內(nèi)存(相互覆蓋)共用體類型定義定義形式:union 共用體名 類型標(biāo)識(shí)符 成員名; 類型標(biāo)識(shí)符 成員名; .;例 union data int i; char ch; float f; ;fchi類型定義不分配內(nèi)存9.8 共用體你現(xiàn)在所處的位置在:首頁C語言教學(xué)幻燈片版第九章 結(jié)構(gòu)體與共用體形式一: union data int i; char ch; float f;

16、a,b;形式二: union data int i; char ch; float f; ; union data a,b,c,*p,d3;形式三: union int i; char ch; float f; a,b,c;fchifchiab共用體變量定義分配內(nèi)存,長度=最長成員所占字節(jié)數(shù)共用體變量任何時(shí)刻只有一個(gè)成員存在共用體變量的定義你現(xiàn)在所處的位置在:首頁C語言教學(xué)幻燈片版第九章 結(jié)構(gòu)體與共用體引用方式:例 a.i=1; a.ch=a; a.f=1.5; printf(“%d”,a.i); (編譯通過,運(yùn)行結(jié)果不對(duì)) 引用規(guī)則不能引用共用體變量,只能引用其成員共用體指針名-成員名共用體

17、變量名.成員名(*共用體指針名).成員名union data int i; char ch; float f; ; union data a,b,c,*p,d3;a.i a.ch a.fp-i p-ch p-f(*p).i (*p).ch (*p).fd0.i d0.ch d0.f共用體變量中起作用的成員是最后一次存放的成員例 union int i; char ch; float f; a; a=1; () 不能在定義共用體變量時(shí)初始化例 union int i; char ch; float f; a=1,a,1.5; () 可以用一個(gè)共用體變量為另一個(gè)變量賦值例 float x; uni

18、on int i; char ch; float f; a,b; a.i=1; a.ch=a; a.f=1.5; b=a; () x=a.f; ()共用體變量引用你現(xiàn)在所處的位置在:首頁C語言教學(xué)幻燈片版第九章 結(jié)構(gòu)體與共用體01100001 01000001低字節(jié)高字節(jié)0100000101100001ch0ch1運(yùn)行結(jié)果:i=60501ch0=101,ch1=141ch0=A,ch1=amain() union int_char int i; char ch2; x; x.i=24897; printf(i=%on,x.i); printf(ch0=%o,ch1=%on ch0=%c,ch1

19、=%cn, x.ch0,x.ch1,x.ch0,x.ch1);例 將一個(gè)整數(shù)按字節(jié)輸出你現(xiàn)在所處的位置在:首頁C語言教學(xué)幻燈片版第九章 結(jié)構(gòu)體與共用體區(qū)別: 存儲(chǔ)方式不同struct node char ch2; int k;a;union node char ch2; int k;b;achkbch k變量的各成員同時(shí)存在任一時(shí)刻只有一個(gè)成員存在聯(lián)系: 兩者可相互嵌套結(jié)構(gòu)體與共用體你現(xiàn)在所處的位置在:首頁C語言教學(xué)幻燈片版第九章 結(jié)構(gòu)體與共用體 功能:用自定義名字為已有數(shù)據(jù)類型命名 類型定義簡單形式: typedef type name;例 typedef int INTEGER;類型定義語

20、句關(guān)鍵字已有數(shù)據(jù)類型名用戶定義的類型名例 typedef float REAL;類型定義后,與已有類型一樣使用例 INTEGER a,b,c; REAL f1,f2; int a,b,c; float f1,f2; 說明:1.typedef 沒有創(chuàng)造新數(shù)據(jù)類型2.typedef 是定義類型,不能定義變量3.typedef 與 define 不同 define typedef預(yù)編譯時(shí)處理 編譯時(shí)處理簡單字符置換 為已有類型命名 用typedef定義類型你現(xiàn)在所處的位置在:首頁C語言教學(xué)幻燈片版第九章 結(jié)構(gòu)體與共用體按定義變量方法先寫出定義體 如 int i; 將變量名換成新類型名 如 int INTEGER; 最前面加typedef 如 typedef int INTEGER; 用新類型名定義變量 如 INTEGER i,j; 例 定義數(shù)組類型 int a100; int AR

溫馨提示

  • 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)論