九九热最新网址,777奇米四色米奇影院在线播放,国产精品18久久久久久久久久,中文有码视频,亚洲一区在线免费观看,国产91精品在线,婷婷丁香六月天

歡迎來到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
裝配圖網(wǎng)
ImageVerifierCode 換一換
首頁 裝配圖網(wǎng) > 資源分類 > PPT文檔下載  

南京師范大學(xué)C語言第十講.ppt

  • 資源ID:14733234       資源大?。?span id="24d9guoke414" class="font-tahoma">1.03MB        全文頁數(shù):39頁
  • 資源格式: PPT        下載積分:9.9積分
快捷下載 游客一鍵下載
會員登錄下載
微信登錄下載
三方登錄下載: 微信開放平臺登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要9.9積分
郵箱/手機:
溫馨提示:
用戶名和密碼都是您填寫的郵箱或者手機號,方便查詢和重復(fù)下載(系統(tǒng)自動生成)
支付方式: 支付寶    微信支付   
驗證碼:   換一換

 
賬號:
密碼:
驗證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會被瀏覽器默認打開,此種情況可以點擊瀏覽器菜單,保存網(wǎng)頁到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無水印,預(yù)覽文檔經(jīng)過壓縮,下載后原文更清晰。
5、試題試卷類文檔,如果標題沒有明確說明有答案則都視為沒有答案,請知曉。

南京師范大學(xué)C語言第十講.ppt

第十一章 結(jié)構(gòu)體與共用體,本章主要內(nèi)容: 1.結(jié)構(gòu)體定義、使用、初始化 2.結(jié)構(gòu)體數(shù)組和結(jié)構(gòu)體指針 3.單鏈表操作及其應(yīng)用 4.共用體、枚舉類型和用typedef定義類型,11.1 結(jié)構(gòu)體 結(jié)構(gòu)體是一種構(gòu)造數(shù)據(jù)類型 用途:把不同類型的數(shù)據(jù)組合成一個整體-自定義數(shù)據(jù)類型 結(jié)構(gòu)體類型定義,struct 結(jié)構(gòu)體名 類型標識符 成員名; 類型標識符 成員名; . ;,成員類型可以是 基本型或構(gòu)造型,struct是關(guān)鍵字, 不能省略,合法標識符 可省:無名結(jié)構(gòu)體,例 struct student int num; char name20; char sex; int age; float score; char addr30; ;,結(jié)構(gòu)體類型定義描述結(jié)構(gòu) 的組織形式,不分配內(nèi)存 student 是類型名,不是變量,結(jié)構(gòu)體類型定義的作用域,注意有;號,例 struct student int num; char name20; char sex; int age; float score; char addr30; ; struct student stu1,stu2;,11.2 結(jié)構(gòu)體變量的定義 1.先定義結(jié)構(gòu)體類型,再定義結(jié)構(gòu)體變量 一般形式:,struct 結(jié)構(gòu)體名 類型標識符 成員名; 類型標識符 成員名; . ; struct 結(jié)構(gòu)體名 變量名表列;,例 #define STUDENT struct student STUDENT int num; char name20; char sex; int age; float score; char addr30; ; STUDENT stu1,stu2;,2. 定義結(jié)構(gòu)體類型的同時定義結(jié)構(gòu)體變量 一般形式:,struct 結(jié)構(gòu)體名 類型標識符 成員名; 類型標識符 成員名; . 變量名表列;,例 struct student int num; char name20; char sex; int age; float score; char addr30; stu1,stu2;,3. 直接定義結(jié)構(gòu)體變量 一般形式:,struct 類型標識符 成員名; 類型標識符 成員名; . 變量名表列;,例 struct int num; char name20; char sex; int age; float score; char addr30; stu1,stu2;,用無名結(jié)構(gòu)體直接定義 變量只能一次,說明 結(jié)構(gòu)體成員名與程序中變量名可相同,不會混淆 結(jié)構(gòu)體類型及變量的作用域與生存期,11.3 結(jié)構(gòu)體變量的引用 引用規(guī)則 結(jié)構(gòu)體變量不能整體引用,只能引用變量成員,可以將一個結(jié)構(gòu)體變量賦值給另一個結(jié)構(gòu)體變量 結(jié)構(gòu)體嵌套時逐級引用 結(jié)構(gòu)體變量地址與成員地址不同: char name20; char sex; int age; char addr30; ; struct student stu1=112,“Wang Lin”,M,19, “200 Beijing Road”;,形式二:,struct 結(jié)構(gòu)體名 類型標識符 成員名; 類型標識符 成員名; . 結(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”;,形式三:,struct 類型標識符 成員名; 類型標識符 成員名; . 結(jié)構(gòu)體變量=初始數(shù)據(jù);,例 struct int num; char name20; char sex; int age; char addr30; stu1=112,“Wang Lin”,M,19, “200 Beijing Road”;,11.5 結(jié)構(gòu)體數(shù)組 1. 結(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; int age; stu2;,2. 結(jié)構(gòu)體數(shù)組初始化,例 struct int num; char name20; char sex; int age; stu =,;,順序初始化: struct student int num; char name20; char sex; int age; ; struct student stu =100,“Wang Lin”,M,20, 101,“Li Gang”,M,19, 110,“Liu Yan”,F,19;,例 struct student int num; char name20; char sex; int age; stu =,;,3. 結(jié)構(gòu)體數(shù)組引用: 點記法,引用方式: 結(jié)構(gòu)體數(shù)組名下標.成員名,例 11.2 統(tǒng)計侯選人選票 P287,struct person char name20; int count; leader3=“Li”,0,“Zhang”,0,”Wang“,0; #include main() int i,j; char leader_name20; for(i=1;i<=10;i+) scanf(%s,leader_name); for(j=0;j<3;j+) if(strcmp(leader_name,leaderj.name)=0) leaderj.count+; for(i=0;i<3;i+) printf(%5s:%dn,leaderi.name,leaderi.count); ,11.6 結(jié)構(gòu)體和指針 1. 指向結(jié)構(gòu)體變量的指針 定義形式:struct 結(jié)構(gòu)體名 *結(jié)構(gòu)體指針名; 例 struct student *p;,使用結(jié)構(gòu)體指針變量引用成員形式,存放結(jié)構(gòu)體變量在內(nèi)存的起始地址,指向運算符 優(yōu)先級: 1 結(jié)合方向:從左向右,例 指向結(jié)構(gòu)體的指針變量,main() struct student long int num; char name20; char sex; float score; stu_1,*p; p= ,例 int n; int *p= n=10,struct student stu1; struct student *p= (*p).num=101,2. 指向結(jié)構(gòu)體數(shù)組的指針,例 11.2 指向結(jié)構(gòu)體數(shù)組的指針,struct student int num; char name20; char sex; int age; stu3=10101,Li Lin,M,18, 10102,Zhang Fun,M,19, 10104,Wang Min,F,20; main() struct student *p; for(p=stu;pnum,p-name,p-sex,p-age); ,3. 用指向結(jié)構(gòu)體的指針作函數(shù)參數(shù) 用結(jié)構(gòu)體變量的成員作實參 用結(jié)構(gòu)體變量作參數(shù)-多值傳遞,效率低 用指向結(jié)構(gòu)體變量或數(shù)組的指針作形參參數(shù)-實參傳遞結(jié)構(gòu)體的地址,struct stud int no; char name20; float score; ; void din(struct stud s,int n); void prt(struct stud s,int n); main() struct stud st140,*p; int i; din(st1,40); prt(st1,40); ,例 11.3 用結(jié)構(gòu)體數(shù)組作函數(shù)參數(shù):一個班級學(xué)號,姓名,成績輸入輸出.,void din(struct stud s,int n) int i; for(i=0; i<n; i+) scanf(%d%s%f, 改成指針呢?,void prt(struct stud s,int n) struct stud *p; int i; for(p=s; pno,p-name,p-score); ,11.7 單鏈表 單鏈表概念 靜態(tài)鏈表與動態(tài)鏈表,struct stud int no; float score; struct stud *next; ;,表尾標記,2. 動態(tài)內(nèi)存分配函數(shù) (得到內(nèi)存塊, 釋放內(nèi)存塊),(1) void *malloc(unsigned size); 在動態(tài)存儲區(qū)分配一個長度為size的連續(xù)空間, 返回起始地址(指針), 或0 (NULL, 不成功) 例: struct stud *p; p=(struct stud *) mallc(sizeof(struct stud);,(2) void *calloc(unsigned n,unsigned size) 分配 n 個,每個長度為size的空間,分配成功, 返回首址; 不成功返回0 (NULL).,#include 或 ,#include 或 ,NULL在stdio.h 中定義為0,(3) void free(void *ptr) 釋放ptr指向的內(nèi)存區(qū),(3) void free(void *ptr) 釋放ptr指向的內(nèi)存區(qū),3、單鏈表操作 設(shè)有定義:,#include 或 stdlib.h, mem.h,建立鏈表 插入節(jié)點 刪除節(jié)點 遍歷鏈表,#include struct stud int no; float score; struct stud *next; struct stud *head,*u,*p;,(1) 建立鏈表 head=NULL;,(2) 插入 插入表首,NULL為 0 建立的是空表,p-next=head; head=p;, 插入表中間 (插在已知節(jié)點u之后),p-next = u-next; u-next = p;,(3) 刪除 刪除首節(jié)點,p=head; if (p!=NULL) head=p-next; p-next = NULL; ,p,NULL,(3) 刪除 刪除表中間節(jié)點 (刪除已知節(jié)點的后繼節(jié)點),p=u-next; if (p!=NULL) u-next=p-next; p-next = NULL; ,p,NULL,u,(4) 遍歷 如:輸出鏈表每個節(jié)點的數(shù)據(jù),p=head; while (p!=NULL) printf(“%d %fn”,p-no,p-score); p = p-next ; ,p,p,p,p,改寫成for 語句, 自己完成,#include struct intr int data; struct intr *next; ; main( ) struct intr *head,*p; int x; head=0; /* 建立空表 */ printf(input data:n); scanf(“%d, ,4. 舉例. 例11.4: 從鍵盤輸入一系列正整數(shù),遇<=0結(jié)束; 組成先進后出堆棧輸出。FILO,算法: 1. 建立單鏈表 2. 讀入第1個數(shù)據(jù) 3. while (x0) 4. 生成節(jié)點 5. 插入 6. 讀入后續(xù)數(shù)據(jù) 7. 遍歷輸出,printf(“n”); p=head; while (p!=NULL) printf(%d,p-data); p=p-next; ,輸入:1 2 3 4 5 0 輸出: 5 4 3 2 1,#include struct intr int data; struct intr *next; ; main( ) struct intr *head,*p,*t; int x; head=t=0; printf(input data:n); scanf(“%d, ,例 11.5 從鍵盤輸入一系列正整數(shù),遇<=0結(jié)束; 組成先進先出隊列輸出。 FIFO,/* 加表尾標記 */ t-next=0; printf(“n”); p=head; while (p!=0) printf(%d,p-data); p=p-next; ,#include struct intr int data; struct intr *next; ; main( ) struct intr *head,*u,*v,*p; int x; head=0; printf(input data:n); scanf(“%d,例 11.6 從鍵盤輸入一系列正整數(shù),遇<0結(jié)束; 利用鏈表進行插入排序 (從小到大).,p-data=x; /* 建立節(jié)點*/ p-next=v; /* 連后指針 */ if (v=head) head=p; else u-next=p; /*連前指針*/ scanf(%d, ,11.8 共用體 構(gòu)造數(shù)據(jù)類型,也叫聯(lián)合體 用途:使幾個不同類型的變量共占一段內(nèi)存(相互覆蓋) 1. 共用體類型定義 定義形式:,union 共用體名 類型標識符 成員名; 類型標識符 成員名; . ;,例 union data int i; char ch; float f; ;,類型定義不分配內(nèi)存,形式一: union data int i; char ch; float f; 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;,2. 共用體變量的定義,共用體變量定義分配內(nèi)存, 長度=最長成員所占字節(jié)數(shù),共用體變量任何時刻 只有一個成員存在,3. 共用體變量引用 引用方式:,例 a.i=1; a.ch=a; a.f=1.5; printf(“%d”,a.i); (編譯通過,運行結(jié)果不對),引用規(guī)則 不能引用共用體變量,只能引用其成員,共用體變量中起作用的成員是最后一次存放的成員,例 union int i; char ch; float f; a; a=1; (),不能在定義共用體變量時初始化,例 union int i; char ch; float f; a=1,a,1.5; (),可以用一個共用體變量為另一個變量賦值,例 float x; union int i; char ch; float f; a,b; a.i=1; a.ch=a; a.f=1.5; b=a; () x=a.f; (),例 11.7 將一個整數(shù)按字節(jié)輸出,運行結(jié)果: i=60501 ch0=101,ch1=141 ch0=A,ch1=a,main() union int_char int i; char ch2; x; x.i=24897; printf(i=%on,x.i); printf(ch0=%o,ch1=%on ch0=%c,ch1=%cn, x.ch0,x.ch1,x.ch0,x.ch1); ,4. 結(jié)構(gòu)體與共用體 區(qū)別: 存儲方式不同,聯(lián)系: 兩者可相互嵌套,例 11.8 結(jié)構(gòu)體中嵌套共用體 (p289 例11.12 ),struct int num; char name10; char sex; char job; union int class; char position10; category; person2;,例11.9 共用體中嵌套結(jié)構(gòu)體,機器字數(shù)據(jù)與字節(jié)數(shù)據(jù)的處理,struct w_tag char low; char high; ; union u_tag struct w_tag byte_acc; int word_acc; u_acc;,11.9 枚舉 將值一一列舉出來,直接定義變量 enum sun,mon,tue,wed,thu,fri,satworkday,week_end; 可以比較, 可以強制賦值: workday=(enum weekday)3; 也可由程序員指定枚舉元素的值: enum weekdaysun=7,mon=1,tue,wed,thu,fri,satworkday,weekend; 2 3 4 5 6, enum weekday sun,mon,tue,wed,thu,fri,sat; 類型定義 0 1 2 3 4 5 6 常量 enum weekday workday,week_end; 變量定義 week_end=sat; printf(“%d”,week_end); 輸出 6,11.10 用typedef定義類型 功能:為已有數(shù)據(jù)類型定義一個類型名。 類型定義簡單形式: typedef type name;,例 typedef int INTEGER;,類型定義語句關(guān)鍵字,已有數(shù)據(jù)類型名,用戶定義的類型名,例 typedef float REAL;,類型定義后,與已有類型一樣使用,例 INTEGER a,b,c; REAL f1,f2;,typedef定義類型的方法: 按定義變量方法先寫出定義體 如 int i; 將變量名換成新類型名 如 int INTEGER; 最前面加typedef 如 typedef int INTEGER; 用新類型名定義變量 如 INTEGER i,j;,例 定義數(shù)組類型 int a100; int ARRAY100; typedef int ARRAY100; ARRAY a,b,c;, int a100,b100,c100;,例 定義指針類型 char *str; char *STRING; typedef char *STRING; STRING p,s10;, char *p; char *s10;,

注意事項

本文(南京師范大學(xué)C語言第十講.ppt)為本站會員(za****8)主動上傳,裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng)(點擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因為網(wǎng)速或其他原因下載失敗請重新下載,重復(fù)下載不扣分。




關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!