




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、第五講結(jié)構(gòu)體主講:曹岳輝店振輝屢椅翱滿速弊幸凹掉礙氮礎(chǔ)裹節(jié)毖族高葛瓜擰胖累濁產(chǎn)嘴搔詢懶或C+程序設(shè)計基礎(chǔ)ppt課件第5講結(jié)構(gòu)體C+程序設(shè)計基礎(chǔ)ppt課件第5講結(jié)構(gòu)體第1頁,共45頁。2本講內(nèi)容結(jié)構(gòu)體的概念結(jié)構(gòu)體類型的定義結(jié)構(gòu)體變量的初始化和引用結(jié)構(gòu)體數(shù)組指向結(jié)構(gòu)體變量的指針結(jié)構(gòu)體類型數(shù)據(jù)作為函數(shù)參數(shù)工嘴園然慨及陛勁侵宋辦悅剎峪豫候頗剮扳史般纏深曉填起孰沂帝稿會糾C+程序設(shè)計基礎(chǔ)ppt課件第5講結(jié)構(gòu)體C+程序設(shè)計基礎(chǔ)ppt課件第5講結(jié)構(gòu)體第2頁,共45頁。5.1 結(jié)構(gòu)體的概念結(jié)構(gòu)體是用戶自定義的新數(shù)據(jù)類型,在結(jié)構(gòu)體中可以包含若干個不同數(shù)據(jù)類型和不同意義的數(shù)據(jù)項,從而使這些數(shù)據(jù)項組合起來反映某一個
2、信息。例如,可以定義一個職工worker結(jié)構(gòu)體,其中包括職工編號、姓名、性別、年齡、工資、家庭住址、聯(lián)系電話。這樣就可以用一個結(jié)構(gòu)體數(shù)據(jù)類型的變量來存放某個職工的所有相關(guān)信息。并且,用戶自定義的數(shù)據(jù)類型worker也可以與int、double等基本數(shù)據(jù)類型一樣,用來作為定義其他變量的數(shù)據(jù)類型。 鈾沁筐棒蘊媒忘挽礦供們擱澎顆明湛句北弓閏燕圓莢攤尤角鹿彝鬼地論俐C+程序設(shè)計基礎(chǔ)ppt課件第5講結(jié)構(gòu)體C+程序設(shè)計基礎(chǔ)ppt課件第5講結(jié)構(gòu)體第3頁,共45頁。struct 結(jié)構(gòu)體名 數(shù)據(jù)類型成員名1; 數(shù)據(jù)類型成員名2; : 數(shù)據(jù)類型成員名n; 在大括號中的內(nèi)容也稱為“成員表列”或“域表”。數(shù)據(jù)類型可以
3、是基本變量、數(shù)組、指針變量、結(jié)構(gòu)體等類型;5.1 結(jié)構(gòu)體的概念寞眨哉乒幻紅芒慢吹忙怯要抑漲住看瑚石揉估穴旦抓椎警梅綽傈火堵勸漢C+程序設(shè)計基礎(chǔ)ppt課件第5講結(jié)構(gòu)體C+程序設(shè)計基礎(chǔ)ppt課件第5講結(jié)構(gòu)體第4頁,共45頁。例如:定義一個職工worker結(jié)構(gòu)體如下:struct worker long number; char name20; char sex; /sex是成員名 int age; float salary; char address80; char phone20; ; /注意分號不要省略5.1 結(jié)構(gòu)體的概念枝浦澆救莊感籬錯傾拆寞初擬詣捏提旭帶萌應(yīng)惜胡釣埔土析慈晚綜草鄰元C+程序
4、設(shè)計基礎(chǔ)ppt課件第5講結(jié)構(gòu)體C+程序設(shè)計基礎(chǔ)ppt課件第5講結(jié)構(gòu)體第5頁,共45頁。結(jié)構(gòu)體類型中的成員名可以與程序中的變量名相同,二者并不代表同一對象,編譯程序可以自動對它們進(jìn)行區(qū)分。 結(jié)構(gòu)體類型的特點總結(jié)如下:(1)結(jié)構(gòu)體類型是用戶自行構(gòu)造的。(2)它由若干不同的基本數(shù)據(jù)類型的數(shù)據(jù)構(gòu)成。(3)它屬于C+語言的一種數(shù)據(jù)類型,與整型、實型相當(dāng)。因此,定義它時不分配空間,只有用它定義變量時才分配空間。 5.1 結(jié)構(gòu)體的概念int sex=10; /sex是變量名 亂蘇殺及選蔡蠅唾盜氨挫喬淳診痙勸動嫩埂誘必唱炯擇運末儒綜蘸晾刮胸C+程序設(shè)計基礎(chǔ)ppt課件第5講結(jié)構(gòu)體C+程序設(shè)計基礎(chǔ)ppt課件第5講
5、結(jié)構(gòu)體第6頁,共45頁。5.2 結(jié)構(gòu)體類型的定義一、先定義結(jié)構(gòu)體類型再定義變量名這是C+語言中定義結(jié)構(gòu)體類型變量最常見的方式,一般語法格式如下:struct 結(jié)構(gòu)體名 成員表列;struct 結(jié)構(gòu)體名 變量名;一般不要!曠兼痊粳濾笛掏差咯掙桃粕娥塌樸皆銜趟裝龜撐犬峭脹港窄碰因襟頃寥氣C+程序設(shè)計基礎(chǔ)ppt課件第5講結(jié)構(gòu)體C+程序設(shè)計基礎(chǔ)ppt課件第5講結(jié)構(gòu)體第7頁,共45頁。struct Student /聲明一個結(jié)構(gòu)體類型Student int num; /包括一個整型變量num char name20; /包括一個字符數(shù)組name char sex; /包括一個字符變量sex int ag
6、e; /包括一個整型變量age float score; /包括一個單精度型變量 char addr30; /包括一個字符數(shù)組addr ; /最后有一個分號; struct Student student1, student2;5.2 結(jié)構(gòu)體類型的定義Student student1, student2;促投鎢汛爺欣尤硯源旺淺綁銳傳人竭硯褒豌疼湘浩騁囑瀕曳粟進(jìn)邱弱落惹C+程序設(shè)計基礎(chǔ)ppt課件第5講結(jié)構(gòu)體C+程序設(shè)計基礎(chǔ)ppt課件第5講結(jié)構(gòu)體第8頁,共45頁。在定義了結(jié)構(gòu)體變量后,系統(tǒng)會為之分配內(nèi)存單元。例如student1在內(nèi)存中占(4+20+1+4+4+30=63)個字節(jié)如果程序規(guī)模比較大
7、,往往將對結(jié)構(gòu)體類型的定義集中寫入到一個頭文件中。哪個源文件需用到此結(jié)構(gòu)體類型則可用#include命令將該文件包含到本文件中。這樣做便于程序的修改和使用。 5.2 結(jié)構(gòu)體類型的定義挾拇狂殖毛娥再烯喲充簽狀京眶稠鼎雕蛆拌謀鍺巫料剝慘骯甚彥督醫(yī)摟脆C+程序設(shè)計基礎(chǔ)ppt課件第5講結(jié)構(gòu)體C+程序設(shè)計基礎(chǔ)ppt課件第5講結(jié)構(gòu)體第9頁,共45頁。二、在聲明類型的同時定義變量struct 結(jié)構(gòu)體名 成員表列; 變量名表列;5.2 結(jié)構(gòu)體類型的定義struct Student int num; char name20; char sex; int age; float score; char addr30
8、; student1,student2; 肢苔榜伯縮霄角悟撐炎恤婪癟箱緣恬屁壤矽撞榴奇戴跨毗輔掛姚宋卑陳雇C+程序設(shè)計基礎(chǔ)ppt課件第5講結(jié)構(gòu)體C+程序設(shè)計基礎(chǔ)ppt課件第5講結(jié)構(gòu)體第10頁,共45頁。5.2 結(jié)構(gòu)體類型的定義三、直接定義結(jié)構(gòu)體類型變量struct /注意沒有結(jié)構(gòu)體類型名 成員表列; 變量名表列;方式3很少使用。提倡先定義類型后定義變量的方法。在程序比較簡單,結(jié)構(gòu)體類型只在本文件中使用時,也可以用第(2)種方法。拂礁鮮鈔累碟監(jiān)氮攏扶敗去拐苫造穿醛撇錢蜘瑩售曠停絕苔獨迷薊岸響官C+程序設(shè)計基礎(chǔ)ppt課件第5講結(jié)構(gòu)體C+程序設(shè)計基礎(chǔ)ppt課件第5講結(jié)構(gòu)體第11頁,共45頁。(1)
9、不要誤認(rèn)為凡是結(jié)構(gòu)體類型都有相同的結(jié)構(gòu)。實際上,每一種結(jié)構(gòu)體類型都有自己的結(jié)構(gòu),可以定義出許多種具體的結(jié)構(gòu)體類型。(2) 類型與變量是不同的概念,不要混淆。只能對結(jié)構(gòu)體變量中的成員賦值,而不能對結(jié)構(gòu)體類型賦值。在編譯時,是不會為類型分配空間的,只為變量分配空間。(3) 對結(jié)構(gòu)體中的成員(即“域”),可以單獨使用,它的作用與地位相當(dāng)于普通變量。 5.2 結(jié)構(gòu)體類型的定義關(guān)于結(jié)構(gòu)體類型的幾點說明:膜蕉殆木勃鎊筑世雄正腸約取詠村嘩薛綽菩勻榔爪莢墻舍辣癰氖觸泉泊防C+程序設(shè)計基礎(chǔ)ppt課件第5講結(jié)構(gòu)體C+程序設(shè)計基礎(chǔ)ppt課件第5講結(jié)構(gòu)體第12頁,共45頁。struct Date int month;
10、int day;int year;struct Student int num; char name20; char sex; int age; Date birthday; char addr30;student1,student2; /Date是結(jié)構(gòu)體類型,birthday是Date類型的成員(4) 成員也可以是一個結(jié)構(gòu)體變量。5.2 結(jié)構(gòu)體類型的定義緒櫥詠謂絳沏豺支林噬極綱胚寡嶼敬高骨眠覽垣旅遂扛蒼宋盆扳送鏡補麗C+程序設(shè)計基礎(chǔ)ppt課件第5講結(jié)構(gòu)體C+程序設(shè)計基礎(chǔ)ppt課件第5講結(jié)構(gòu)體第13頁,共45頁。(5) 結(jié)構(gòu)體中的成員名可以與程序中的變量名相同,但二者沒有關(guān)系。例如,程序中可以
11、另定義一個整型變量num,它與student中的num是兩回事,互不影響。(6)可用sizeof(結(jié)構(gòu)體變量)計算其所占內(nèi)存的大小(字節(jié)數(shù))。5.2 結(jié)構(gòu)體類型的定義德鈉戎氰讀拇署棗積亮刁適收獺懷恨蘇縛箭尚囑匠鬼別欺乍笑蝦甩挺邑滿C+程序設(shè)計基礎(chǔ)ppt課件第5講結(jié)構(gòu)體C+程序設(shè)計基礎(chǔ)ppt課件第5講結(jié)構(gòu)體第14頁,共45頁。5.3 結(jié)構(gòu)體變量的初始化和引用struct Student int num; char name20; char sex; int age; float score; char addr30; student1=10001,Zhang Xin,M,19,90.5,Shan
12、ghai;也可以采取聲明類型與定義變量分開的形式,在定義變量時進(jìn)行初始化Student student2=10002,Wang Li,F,20,98,Beijing; 豺末韶輛絕康磐鳳鳥拎撼演銷煞棺擅聊的賤耕粉挑手痰姻毗惦蓑彬監(jiān)殖抽C+程序設(shè)計基礎(chǔ)ppt課件第5講結(jié)構(gòu)體C+程序設(shè)計基礎(chǔ)ppt課件第5講結(jié)構(gòu)體第15頁,共45頁。(1) 可以將一個結(jié)構(gòu)體變量的值賦給另一個具有相同結(jié)構(gòu)的結(jié)構(gòu)體變量。 student1= student2;(2) 可以引用一個結(jié)構(gòu)體變量中的一個成員的值。格式:結(jié)構(gòu)體變量名.成員名student1.num=10010;(3) 不能將一個結(jié)構(gòu)體變量作為一個整體進(jìn)行輸入和輸
13、出,只能對結(jié)構(gòu)體變量中的各個成員分別進(jìn)行輸入和輸出。coutstudent1; /錯誤coutstudent1.num; /正確5.3 結(jié)構(gòu)體變量的初始化和引用唬偉筋旁晌冪銘值谷究鞭篙斯繳捎褒批容險鷹峻具激卡螢掠諺蛙鞋簍錨元C+程序設(shè)計基礎(chǔ)ppt課件第5講結(jié)構(gòu)體C+程序設(shè)計基礎(chǔ)ppt課件第5講結(jié)構(gòu)體第16頁,共45頁。(4) 如果成員本身也是一個結(jié)構(gòu)體類型,則要用若干個成員運算符,一級一級地找到最低一級的成員。coutstudent1.birthday.month;5.3 結(jié)構(gòu)體變量的初始化和引用瞇從嬌肋爬柵徽睫夜耪程蛾更燕疇坪掣縫振妥孰跋秀椒享傅屏阿驕僥苗歧C+程序設(shè)計基礎(chǔ)ppt課件第5講結(jié)
14、構(gòu)體C+程序設(shè)計基礎(chǔ)ppt課件第5講結(jié)構(gòu)體第17頁,共45頁。(5) 對結(jié)構(gòu)體變量的成員可以像普通變量一樣進(jìn)行各種運算student2.scorestudent1.score; sumstudent1.scorestudent2.score; student1.age+;+student1.age;5.3 結(jié)構(gòu)體變量的初始化和引用由于“.”運算符的優(yōu)先級最高,因此student1.age+相當(dāng)于(student1.age)+。+是對student1.age進(jìn)行自加運算,而不是先對age進(jìn)行自加運算。梧柵居蹋檸蛹邏淄少踴橇嚏拱論穆出父銅謂曳巢粟鈴漆筋腕壹渡植寫暢冒C+程序設(shè)計基礎(chǔ)ppt課件第5講
15、結(jié)構(gòu)體C+程序設(shè)計基礎(chǔ)ppt課件第5講結(jié)構(gòu)體第18頁,共45頁。(6) 可以引用結(jié)構(gòu)體變量成員的地址,也可以引用結(jié)構(gòu)體變量的地址。如cout&student1; /輸出student1的首地址cout&student1.age; /輸出student1.age的地址結(jié)構(gòu)體變量的地址主要用作函數(shù)參數(shù),將結(jié)構(gòu)體變量的地址傳遞給形參。5.3 結(jié)構(gòu)體變量的初始化和引用引炒震屠洼菲瑟夾乳燴卻擯辰蹲眠丁擻吞陜蝸城兜撮象詠染徐呸瞻弟稅學(xué)C+程序設(shè)計基礎(chǔ)ppt課件第5講結(jié)構(gòu)體C+程序設(shè)計基礎(chǔ)ppt課件第5講結(jié)構(gòu)體第19頁,共45頁。5.3 結(jié)構(gòu)體變量的初始化和引用#include using namespac
16、e std;struct Date int month;int day;int year;struct Student int num; char name20; char sex; int age; Date birthday; double score;student1,student2=10002,Wang Li, f,20,5,23,1982,89.5; 帽太攫腋辦瘸詫暇幕瞬柴隔專奈宮續(xù)譬旺側(cè)膜亮弧妨謙卷辭羅佰豬島僥濱C+程序設(shè)計基礎(chǔ)ppt課件第5講結(jié)構(gòu)體C+程序設(shè)計基礎(chǔ)ppt課件第5講結(jié)構(gòu)體第20頁,共45頁。int main( ) student1=student2;coutstu
17、dent1.numendl; /輸出student1中的num成員的值endl; /student1中的name成員的值coutstudent1.sexendl; /student1中的sex成員的值coutstudent1.birthday.month/student1.birthday.day/ student1.birthday.yearendl; coutstudent1.scoreendl;return 0;運行結(jié)果如下: 10002Wang Lif5/23/198289.55.3 結(jié)構(gòu)體變量的初始化和引用縱牲仇桂無豌瞥謄們辭芭瞞倡追鷗抬寂把疼把坪薯
18、約查聰削黑于搞育隱謊C+程序設(shè)計基礎(chǔ)ppt課件第5講結(jié)構(gòu)體C+程序設(shè)計基礎(chǔ)ppt課件第5講結(jié)構(gòu)體第21頁,共45頁。 一個結(jié)構(gòu)體變量中可以存放一組數(shù)據(jù)(如一個學(xué)生的學(xué)號、姓名、成績等數(shù)據(jù))。如果有10個學(xué)生的數(shù)據(jù)需要參加運算,顯然應(yīng)該用數(shù)組,這就是結(jié)構(gòu)體數(shù)組。結(jié)構(gòu)體數(shù)組與以前介紹過的數(shù)值型數(shù)組的不同之處在于: 每個數(shù)組元素都是一個結(jié)構(gòu)體類型的數(shù)據(jù),它們都分別包括各個成員項。5.4 結(jié)構(gòu)體數(shù)組者勘凡澤摳焰洼祖鋇鄲瑪秀鈉虎蹋勺之腋賊器泅霓萎抑太轍曳卑厭孰吁的C+程序設(shè)計基礎(chǔ)ppt課件第5講結(jié)構(gòu)體C+程序設(shè)計基礎(chǔ)ppt課件第5講結(jié)構(gòu)體第22頁,共45頁。struct Student /聲明結(jié)構(gòu)體類型
19、Student int num;char name20;char sex;int age;float score;char addr30;Student stu3; /定義Student類型的數(shù)組stu1. 定義結(jié)構(gòu)體數(shù)組5.4 結(jié)構(gòu)體數(shù)組趾鎢湘盈紗掄喊章配稼楚體斥賴龜貶委絳亢宵閨拜撾葬尉罕怯畸鈕抹竭鎮(zhèn)C+程序設(shè)計基礎(chǔ)ppt課件第5講結(jié)構(gòu)體C+程序設(shè)計基礎(chǔ)ppt課件第5講結(jié)構(gòu)體第23頁,共45頁。struct Student int num; char name20; char sex; int age; float score; char addr30;stu3;struct int num
20、; char name20; char sex; int age; float score; char addr30;stu3;5.4 結(jié)構(gòu)體數(shù)組或馮蝎氯贅綻炕拽眾箱瞞鳥車益摯毋芍爺慢穗箍健構(gòu)怠姿臭悔貳糾俗轟羅牡C+程序設(shè)計基礎(chǔ)ppt課件第5講結(jié)構(gòu)體C+程序設(shè)計基礎(chǔ)ppt課件第5講結(jié)構(gòu)體第24頁,共45頁。數(shù)組各元素在內(nèi)存中連續(xù)存放5.4 結(jié)構(gòu)體數(shù)組祟里賽鍘鉚茄阮拆甕跪粒抉檄嘩判亦茫瓶鉗蠅趾處里腆那筑儡相輪碧損慢C+程序設(shè)計基礎(chǔ)ppt課件第5講結(jié)構(gòu)體C+程序設(shè)計基礎(chǔ)ppt課件第5講結(jié)構(gòu)體第25頁,共45頁。struct Student int num; char name20; char se
21、x; int age; float score; char addr30;stu3=10101,Li Lin,M,18,87.5,103 Beijing Road, 10102, Zhang Fun, M,19,99, 130 Shanghai Road, 10104, Wang Min,F,20,78.5, 1010,Zhongshan Road ;2. 結(jié)構(gòu)體數(shù)組的初始化5.4 結(jié)構(gòu)體數(shù)組瑚白虹黑謙轅越聾狼乾企候輥堯辭闊檄閑挾辱讀拷疼萎撣布郝療石鉸曳貌C+程序設(shè)計基礎(chǔ)ppt課件第5講結(jié)構(gòu)體C+程序設(shè)計基礎(chǔ)ppt課件第5講結(jié)構(gòu)體第26頁,共45頁。也可以不指定元素個數(shù),即寫成以下形式: st
22、u =,;同樣可與成以下形式: Student stu =,; 結(jié)構(gòu)體數(shù)組初始化的一般形式是在所定義的數(shù)組名的后面加上 =初值表列;5.4 結(jié)構(gòu)體數(shù)組遂鵑鎳島項執(zhí)鳴第靛鷹經(jīng)沂膛堰細(xì)喻頁灑湖瘸貞檬慷鑿板鞏臼顏征箔懲掠C+程序設(shè)計基礎(chǔ)ppt課件第5講結(jié)構(gòu)體C+程序設(shè)計基礎(chǔ)ppt課件第5講結(jié)構(gòu)體第27頁,共45頁。設(shè)有3個候選人,最終只能有1人當(dāng)選為領(lǐng)導(dǎo)。今有10個人參加投票,從鍵盤先后輸入這10個人所投的候選人的名字,要求最后輸出這3個候選人的得票結(jié)果。3. 結(jié)構(gòu)體數(shù)組應(yīng)用舉例#include using namespace std;struct Person char name20; int c
23、ount;int main( ) Person leader3=Li,0, Zhang,0, Sun,0; 5.4 結(jié)構(gòu)體數(shù)組榨交降疆瘁粗扇蓖蘆失辨迫睛至?xí)灤桃娔劣軆~卡編焦砸屹數(shù)星某螟院哈冠C+程序設(shè)計基礎(chǔ)ppt課件第5講結(jié)構(gòu)體C+程序設(shè)計基礎(chǔ)ppt課件第5講結(jié)構(gòu)體第28頁,共45頁。int i,j;char leader_name20; for(i=0;ileader_name; /先后輸入10張票上所寫的姓名 for(j=0;j3;j+) /將票上姓名與3個候選人的姓名比較 if(strcmp(leader_name,)=0) leaderj.count+; cou
24、tendl; for(i=0;i3;i+) /輸出3個候選人的姓名與最后得票數(shù) :leaderi.countendl; return 0; /主函數(shù)5.4 結(jié)構(gòu)體數(shù)組寢橫糟秋恬所唆唱凳鎂鞋甚兩飲態(tài)婆疑赤椎勸幫蝴討呢秧惦嚙咸奧冠衍促C+程序設(shè)計基礎(chǔ)ppt課件第5講結(jié)構(gòu)體C+程序設(shè)計基礎(chǔ)ppt課件第5講結(jié)構(gòu)體第29頁,共45頁。 一個結(jié)構(gòu)體變量的指針就是該變量所占據(jù)的內(nèi)存段的起始地址??梢栽O(shè)一個指針變量,用來指向一個結(jié)構(gòu)體變量,此時該指針變量的值是結(jié)構(gòu)體變量的起始地址。指針變量也可以用來指向結(jié)構(gòu)體數(shù)組中的元素。5.5 指向結(jié)構(gòu)體變量的指針冀徹腥傣丫箭亦敷泄歹卒寅紹受
25、住寄瓦是梅先痰執(zhí)瓊?cè)婪聝茨慈早犎碑Y灶C+程序設(shè)計基礎(chǔ)ppt課件第5講結(jié)構(gòu)體C+程序設(shè)計基礎(chǔ)ppt課件第5講結(jié)構(gòu)體第30頁,共45頁。#include #include using namespace std;int main( ) struct Student int num; string name; char sex; float score; ;Student stu; Student *p=&stu; stu.num=10301; =Wang Fun; stu.sex=f;stu.score=89.5;coutstu. num stu.sex stu.
26、scoreendl;cout(*p).num (*p).name (*p).sex (*p).score ,例如p-num表示指針p當(dāng)前指向的結(jié)構(gòu)體變量中的成員num。p-num 和(*p).num等價5.5 指向結(jié)構(gòu)體變量的指針柄羅玲賀爪他搔梅靜祁露工凝阮忌灑脊夕驚驚胖龍沁取貴炮毛快蛻妒成赫C+程序設(shè)計基礎(chǔ)ppt課件第5講結(jié)構(gòu)體C+程序設(shè)計基礎(chǔ)ppt課件第5講結(jié)構(gòu)體第32頁,共45頁。 結(jié)構(gòu)體變量.成員名。如stu.num。 (*p).成員名。如(*p).num。 p-成員名。如p-num?!?”稱為指向運算符。5.5 指向結(jié)構(gòu)體變量的指針p-np-n+ +p-n三種形式等價請分析以下幾種運
27、算:得到p指向的結(jié)構(gòu)體變量中的成員n的值。p指向的結(jié)構(gòu)體變量中的成員n的值,用完該值后使它加1。p指向的結(jié)構(gòu)體變量中的成員n的值,并使之加1,然后再使用它。媽誓皇庸刑貨蝦嘛控鞘軋斂獄進(jìn)征藹剪念岸挽墜息鹽八準(zhǔn)蠶楊侍紀(jì)媒代薦C+程序設(shè)計基礎(chǔ)ppt課件第5講結(jié)構(gòu)體C+程序設(shè)計基礎(chǔ)ppt課件第5講結(jié)構(gòu)體第33頁,共45頁。鏈表是一種常見的重要的數(shù)據(jù)結(jié)構(gòu),最簡單單向鏈表結(jié)構(gòu):2. 用結(jié)構(gòu)體變量和指向結(jié)構(gòu)體變量的指針構(gòu)成鏈表鏈表有一個“頭指針”變量,圖中以head表示,它存放一個地址。該地址指向一個元素。鏈表中的每一個元素稱為“結(jié)點”,每個結(jié)點都應(yīng)包括兩個部分: 一是用戶需要用的實際數(shù)據(jù),二是下一個結(jié)點的
28、地址。5.5 指向結(jié)構(gòu)體變量的指針簾泅污詢譯蘿溉酒煮周矣和工撓蛻摔拄寢營肆閩搔荊乎椽蕉班蟬袁隋醇郎C+程序設(shè)計基礎(chǔ)ppt課件第5講結(jié)構(gòu)體C+程序設(shè)計基礎(chǔ)ppt課件第5講結(jié)構(gòu)體第34頁,共45頁。鏈表中各元素在內(nèi)存中的存儲單元可以是不連續(xù)的。要找某一元素,可以先找到上一個元素,根據(jù)它提供的下一元素地址找到下一個元素??衫媒Y(jié)構(gòu)體變量和指針來實現(xiàn)。struct Student int num;/實際數(shù)據(jù)1 float score;/實際數(shù)據(jù)2 Student *next; /存放下一結(jié)點地址的指針變量;5.5 指向結(jié)構(gòu)體變量的指針橙示硯捏綱兒猿吵餡儡程被燕烷歷共貿(mào)助均采撬逼默板拔昭與杰顆冒宙賂C+
29、程序設(shè)計基礎(chǔ)ppt課件第5講結(jié)構(gòu)體C+程序設(shè)計基礎(chǔ)ppt課件第5講結(jié)構(gòu)體第35頁,共45頁。 每一個結(jié)點都屬于Student類型,在它的成員next中存放下一個結(jié)點的地址,程序設(shè)計者不必知道各結(jié)點的具體地址,只要保證能將下一個結(jié)點的地址放到前一結(jié)點的成員next中即可。5.5 指向結(jié)構(gòu)體變量的指針奎零鞏揚訖陛淋毋恕網(wǎng)奏燴依汽賣埋伴霸始皿色囑吾風(fēng)申銘紫恨淑氧企哭C+程序設(shè)計基礎(chǔ)ppt課件第5講結(jié)構(gòu)體C+程序設(shè)計基礎(chǔ)ppt課件第5講結(jié)構(gòu)體第36頁,共45頁。#define NULL 0 #include using namespace std;struct Student long num; fl
30、oat score; Student *next;int main( ) Student a,b,c,*head,*p; a. num=31001; a.score=89.5; b. num=31003; b.score=90; c. num=31007; c.score=85;5.5 指向結(jié)構(gòu)體變量的指針牟蛇卻蹦尿霍紋氈殿潔姥彝穆峪侖肩探恐庇瞪酮連該院線捂其湖及陡極征C+程序設(shè)計基礎(chǔ)ppt課件第5講結(jié)構(gòu)體C+程序設(shè)計基礎(chǔ)ppt課件第5講結(jié)構(gòu)體第37頁,共45頁。head=&a; /將結(jié)點a的起始地址賦給頭指針heada.next=&b; /將結(jié)點b的起始地址賦給a結(jié)點的next成員b.nex
31、t=&c; c.next=NULL; /結(jié)點的next成員不存放其他結(jié)點地址p=head; /使p指針指向a結(jié)點do coutnum scorenext; /使p指向下一個結(jié)點 while(p!=NULL); /輸出完c結(jié)點后p的值為NULL return 0;5.5 指向結(jié)構(gòu)體變量的指針圃短澳蒂縮戰(zhàn)蟲寒綸惦兄貳逼劊礦竄沸凄甘呵虐廁銷載浴箱篆除蔣蕾搗疙C+程序設(shè)計基礎(chǔ)ppt課件第5講結(jié)構(gòu)體C+程序設(shè)計基礎(chǔ)ppt課件第5講結(jié)構(gòu)體第38頁,共45頁。將一個結(jié)構(gòu)體變量中的數(shù)據(jù)傳遞給另一個函數(shù): (1) 用結(jié)構(gòu)體變量名作參數(shù)(傳值調(diào)用)。一般較少用這種方法。(2) 用指向結(jié)構(gòu)體變量的指針作實參,將結(jié)構(gòu)
32、體變量的地址傳給形參(傳址調(diào)用) 。(3) 用結(jié)構(gòu)體變量的引用變量作函數(shù)參數(shù)(引用調(diào)用) 。5.6 結(jié)構(gòu)體類型數(shù)據(jù)作為函數(shù)參數(shù)霞底蹲眨戒恨撓釜棉茁稱勝雷餞編患輾椅鋅量查亢郵渺站次猴推嫂蹲忽綜C+程序設(shè)計基礎(chǔ)ppt課件第5講結(jié)構(gòu)體C+程序設(shè)計基礎(chǔ)ppt課件第5講結(jié)構(gòu)體第39頁,共45頁。#include #include using namespace std;struct Student int num; string name; float score3;void print(Student stu);int main( ) Student stu; stu.num=12345; 5.6 結(jié)
33、構(gòu)體類型數(shù)據(jù)作為函數(shù)參數(shù) =Li Fung; stu.score0=67.5; stu.score1=89; stu.score2=78.5; print(stu); return 0;void print(Student stu)coutstu.num stu.score0 stu.score1 stu.score2endl;(傳值調(diào)用)聾毯舒話罐驕芭餌囪淬齊鮑耐彥娥伯箱癢統(tǒng)黨冰黑那抗粘洛霞齒召緯佑澳C+程序設(shè)計基礎(chǔ)ppt課件第5講結(jié)構(gòu)體C+程序設(shè)計基礎(chǔ)ppt課件第5講結(jié)構(gòu)體第40頁,共45頁。#include using namespace std;struct Student int num; char name20; float score3;stu=12345,Li Fung, 67.5,89,78.5; void print(Student *p);int main( ) Student *pt=&stu;5.6 結(jié)構(gòu)體類型數(shù)據(jù)作為函數(shù)參數(shù) print(pt); /或print(&stu); return 0;void print(Student *p) coutnum name score0 score1 score2 endl;(傳址調(diào)用)潛偶品滾況售湃仟匙宣糾轎炔賺柳夾鎮(zhèn)崩藥提種緊
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 河南測繪職業(yè)學(xué)院《社會體育運動技能與指導(dǎo)(瑜伽)》2023-2024學(xué)年第二學(xué)期期末試卷
- 廣西財經(jīng)學(xué)院《流域管理學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 吉安職業(yè)技術(shù)學(xué)院《群落生態(tài)學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 重慶城市科技學(xué)院《安全行為學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 新疆農(nóng)業(yè)大學(xué)《醫(yī)學(xué)影像診斷學(xué)1》2023-2024學(xué)年第二學(xué)期期末試卷
- 海南大學(xué)《中國古文名篇導(dǎo)讀》2023-2024學(xué)年第二學(xué)期期末試卷
- 安陽幼兒師范高等??茖W(xué)校《學(xué)位論文選題與設(shè)計》2023-2024學(xué)年第二學(xué)期期末試卷
- 公章申請流程
- 抽排水施工方案
- 2025年鄉(xiāng)村醫(yī)生崗位理論知識考試模擬試題及答案(共100題)
- (一模)2025年汕頭市2025屆高三高考第一次模擬考試 語文試卷(含答案詳解)
- 上海浦東新區(qū)2024-2025高三上學(xué)期期末教學(xué)質(zhì)量檢測(一模)物理試卷(解析版)
- 2023年中小學(xué)心理健康教育課程標(biāo)準(zhǔn)
- 2025河南中煙工業(yè)限責(zé)任公司一線崗位招聘128人易考易錯模擬試題(共500題)試卷后附參考答案
- 2025年中國中壓變頻器行業(yè)深度調(diào)研與投資戰(zhàn)略規(guī)劃分析報告
- 2025年上半年遼寧省盤錦市大洼區(qū)招聘招商人員30人易考易錯模擬試題(共500題)試卷后附參考答案
- 2025年度旅游車租賃及景區(qū)門票代理服務(wù)協(xié)議
- 2024年湖南高速鐵路職業(yè)技術(shù)學(xué)院高職單招數(shù)學(xué)歷年參考題庫含答案解析
- 人教版音樂教材培訓(xùn)
- 2025安徽合肥市軌道交通集團(tuán)限公司社會招聘50人高頻重點提升(共500題)附帶答案詳解
- 《淺談李賀詩歌中的色彩藝術(shù)》3700字(論文)
評論
0/150
提交評論