




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、你現在所處的位置在:首頁C語言教學幻燈片版第九章 結構體與共用體第九章 結構體與共用體結構體結構體變量的定義結構體變量的引用結構體變量的初始化結構體數組結構體和指針共用體你現在所處的位置在:首頁C語言教學幻燈片版第九章 結構體與共用體9.1 結構體&結構體是一種構造數據類型&用途:把不同類型的數據組合成一個整體-自定義數據類型結構體類型定義struct 結構體名 類型標識符 成員名; 類型標識符 成員名; .;成員類型可以是基本型或構造型struct是關鍵字,不能省略合法標識符可省:無名結構體你現在所處的位置在:首頁C語言教學幻燈片版第九章 結構體與共用體例 struct st
2、udent int num; char name20; char sex; int age; float score; char addr30; ; namenumsexagescoreaddr2字節2字節20字節1字節4字節30字節.結構體類型定義描述結構的組織形式,不分配內存結構體類型定義的作用域例子圖解你現在所處的位置在:首頁C語言教學幻燈片版第九章 結構體與共用體先定義結構體類型,再定義結構體變量一般形式: struct 結構體名 類型標識符 成員名; 類型標識符 成員名; .;struct 結構體名 變量名表列;9.2 結構體變量的定義你現在所處的位置在:首頁C語言教學幻燈片版第九章
3、 結構體與共用體一般形式:struct 結構體名 類型標識符 成員名; 類型標識符 成員名; .變量名表列;例 struct student int num; char name20; char sex; int age; float score; char addr30; stu1,stu2; 定義結構體類型的同時定義結構體變量你現在所處的位置在:首頁C語言教學幻燈片版第九章 結構體與共用體一般形式:struct 類型標識符 成員名; 類型標識符 成員名; .變量名表列;例 struct int num; char name20; char sex; int age; float score
4、; char addr30; stu1,stu2; 用無名結構體直接定義變量只能一次直接定義結構體變量你現在所處的位置在:首頁C語言教學幻燈片版第九章 結構體與共用體結構體類型與結構體變量概念不同類型:不分配內存; 變量:分配內存類型:不能賦值、存取、運算; 變量:可以結構體可嵌套結構體成員名與程序中變量名可相同,不會混淆結構體類型及變量的作用域與生存期說明:你現在所處的位置在:首頁C語言教學幻燈片版第九章 結構體與共用體引用規則 結構體變量不能整體引用,只能引用變量成員可以將一個結構體變量賦值給另一個結構體變量結構體嵌套時逐級引用成員(分量)運算符優先級: 1結合性:從左向右引用方式: 結構
5、體變量名.成員名9.3 結構體變量的引用你現在所處的位置在:首頁C語言教學幻燈片版第九章 結構體與共用體形式一:struct 結構體名 類型標識符 成員名; 類型標識符 成員名; .;struct 結構體名 結構體變量=初始數據;例 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 結構體變量的初始化你現在所處的位置在:首頁C語言教學幻燈片版第九章 結構體與共用體struct
6、結構體名 類型標識符 成員名; 類型標識符 成員名; .結構體變量=初始數據;例 struct student int num; char name20; char sex; int age; char addr30; stu1=112,“Wang Lin”,M,19, “200 Beijing Road”; 結構體變量的初始化形式二:你現在所處的位置在:首頁C語言教學幻燈片版第九章 結構體與共用體struct 類型標識符 成員名; 類型標識符 成員名; .結構體變量=初始數據;例 struct int num; char name20; char sex; int age; char add
7、r30; stu1=112,“Wang Lin”,M,19, “200 Beijing Road”; 結構體變量的初始化形式三:你現在所處的位置在:首頁C語言教學幻燈片版第九章 結構體與共用體結構體數組的定義三種形式:形式一: 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 結構體數組你現在所處的位置在:首頁C語言教學幻燈片版第九章 結構體與共用體例 struct int num; char name20; char sex; int age; stu =,;結構體數組引用引用方式: 結構體數組名下標.成員名 struct student int num; char name20; char sex; int age; str3;stu1.age+;strcpy(,”ZhaoDa”);結構體數組初始化你現在所處的位置在:首頁C語言教學幻
9、燈片版第九章 結構體與共用體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成員名結構體變量名.成員名指向運算符優先級: 1結合方向:從左向右例 指向結構體的指針變量例 int n; int *p
10、=&n; *p=10; n=10struct student stu1;struct student *p=&stu1;stu1.num=101; (*p).num=1019.6 結構體和指針你現在所處的位置在:首頁C語言教學幻燈片版第九章 結構體與共用體用結構體變量的成員作參數-值傳遞用指向結構體變量或數組的指針作參數-地址傳遞用結構體變量作參數-多值傳遞,效率低用指向結構體的指針作函數參數你現在所處的位置在:首頁C語言教學幻燈片版第九章 結構體與共用體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)例 用結構體變量作函數參數(1)你現在所處的位置在:首頁C語言教學幻
13、燈片版第九章 結構體與共用體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*例 用結構體指針變量作函數參數(2)你現在所處的位置在:首頁C語言教學幻燈片版第九章 結構體與共用體&構造數據類型,也叫聯合體&用途:使幾個不同類型的變量共占一段內存(相互覆蓋)共用體類型定義定義形式:union 共用體名 類型標識符 成員名; 類型標識符 成員名; .;例 union data int i; char ch; float f; ;fchi類型定義不分配內存9.8 共用體你現在所處的位置在:首頁C語言教學幻燈片版第九章 結構體與共用體形式一: 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共用體變量定義分配內存,長度=最長成員所占字節數共用體變量任何時刻只有一個成員存在共用體變量的定義你現在所處的位置在:首頁C語言教學幻燈片版第九章 結構體與共用體引用方式:例 a.i=1; a.ch=a; a.f=1.5; printf(“%d”,a.i); (編譯通過,運行結果不對) 引用規則不能引用共用體變量,只能引用其成員共用體指針名-成員名共用體
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; () 不能在定義共用體變量時初始化例 union int i; char ch; float f; a=1,a,1.5; () 可以用一個共用體變量為另一個變量賦值例 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; ()共用體變量引用你現在所處的位置在:首頁C語言教學幻燈片版第九章 結構體與共用體01100001 01000001低字節高字節0100000101100001ch0ch1運行結果: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);例 將一個整數按字節輸出你現在所處的位置在:首頁C語言教學幻燈片版第九章 結構體與共用體區別: 存儲方式不同struct node char ch2; int k;a;union node char ch2; int k;b;achkbch k變量的各成員同時存在任一時刻只有一個成員存在聯系: 兩者可相互嵌套結構體與共用體你現在所處的位置在:首頁C語言教學幻燈片版第九章 結構體與共用體 功能:用自定義名字為已有數據類型命名 類型定義簡單形式: typedef type name;例 typedef int INTEGER;類型定義語
20、句關鍵字已有數據類型名用戶定義的類型名例 typedef float REAL;類型定義后,與已有類型一樣使用例 INTEGER a,b,c; REAL f1,f2; int a,b,c; float f1,f2; 說明:1.typedef 沒有創造新數據類型2.typedef 是定義類型,不能定義變量3.typedef 與 define 不同 define typedef預編譯時處理 編譯時處理簡單字符置換 為已有類型命名 用typedef定義類型你現在所處的位置在:首頁C語言教學幻燈片版第九章 結構體與共用體按定義變量方法先寫出定義體 如 int i; 將變量名換成新類型名 如 int INTEGER; 最前面加typedef 如 typedef int INTEGER; 用新類型名定義變量 如 INTEGER i,j; 例 定義數組類型 int a100; int AR
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 電火花檢測儀項目風險評估報告
- 2025至2030年中國小型橡膠游艇行業投資前景及策略咨詢報告
- 2022-2027年中國熱導儀市場規模現狀及投資規劃建議報告
- 2025至2030年中國寬幅條碼標簽打印機行業投資前景及策略咨詢報告
- 2025至2030年中國合金鞋飾數據監測研究報告
- 2025年中國液壓鉆機行業市場全景評估及投資前景展望報告
- 2025至2030年中國古錢幣市場分析及競爭策略研究報告
- 2025至2030年中國變頻電子除垢儀行業投資前景及策略咨詢報告
- 2025至2030年中國取芯機鉆頭市場現狀分析及前景預測報告
- 2025年中國轉速計行業市場發展監測及投資潛力預測報告
- 汽車維修質量保證制度
- 外研版(三起)(2024)三年級下冊英語Unit 3 單元測試卷(含答案)
- 2024年廣州市衛生健康系統招聘“優才計劃”考試真題
- 重點營業線施工方案
- 餐飲店菜品成本計算表
- 《水土保持監測技術規范SLT 277-2024》知識培訓
- 2025年江蘇南京事業單位招聘(787人)高頻重點模擬試卷提升(共500題附帶答案詳解)
- GB/T 33136-2024信息技術服務數據中心服務能力成熟度模型
- 《保護地球愛護家園》課件
- 霧化吸入療法合理用藥專家共識(2024版)解讀
- 2024年度產學研合作與科研獎勵協議3篇
評論
0/150
提交評論