版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
展展
編輯本段C++提供了許多種基本的數(shù)據(jù)類型(如i、llcr等)已有的數(shù)據(jù)類型顯得不能滿足使用要求。因此C++允許用戶根據(jù)需要自己一些類型,用戶可以自己的類型還有結(jié)構(gòu)體類(srcr)、(i)(mri)類型(clss)等,這些統(tǒng)稱為用戶自定義類型(sr-idypUDT)。也可以相同)的數(shù)據(jù)項(xiàng)。C和C++允許用戶自己過(guò)下面的來(lái)建立數(shù)據(jù)類型。structStudent//一個(gè)結(jié)構(gòu)體類{ intage;//age 類型Student(struct是結(jié)構(gòu)體類型時(shí)所必須使用的關(guān)鍵字,不能省略),它向編譯系統(tǒng):這是一種結(jié)構(gòu)體類型,它包括num,name, age,score,addr等不同類型的數(shù)據(jù)項(xiàng)。應(yīng)當(dāng)說(shuō)明Student是一個(gè)類型名,它和系統(tǒng)提供的標(biāo)準(zhǔn)類型(如int、char、float、double一樣,都可以用自己而已。struct結(jié)構(gòu)體類型名{成員表列面的中Student就是結(jié)構(gòu)體類型名。大括號(hào)成一個(gè)特定的結(jié)構(gòu)體。上例中的num,name,,score同結(jié)構(gòu)體類型的位置一般在文件的開(kāi)頭,在所有函數(shù)(包括main函數(shù))之前,以便本文件中在函數(shù)中結(jié)構(gòu)體類型。C語(yǔ)言中,結(jié)構(gòu)體的成員只能是數(shù)據(jù)(如編輯本段定(1)先結(jié)構(gòu)體類型再定義變量名如上面已定義了一個(gè)結(jié)構(gòu)體類型Student,可以用它來(lái)structStudentstudent1,以上定義了student1和student2為結(jié)構(gòu)體類型structStudent的變量,即它們具有structStudent統(tǒng)會(huì)為之分配內(nèi)存單元。例如student1和(+++++=3,但是這里需要注意:名義上計(jì)算大小為3,根據(jù)不同編譯器,內(nèi)存會(huì)有所不同,在該結(jié)構(gòu)體時(shí)會(huì)按照內(nèi)存對(duì)齊進(jìn)行相關(guān)處理,系統(tǒng)(即按it可以認(rèn)為每相鄰兩個(gè)數(shù)據(jù)成員是大小是4的整數(shù)倍請(qǐng)參考面對(duì)比構(gòu)體)考內(nèi),具體計(jì)算如下:,{char;//字符類型一個(gè)字節(jié)往下不能湊intage;//4個(gè)字節(jié)floatscore;//4個(gè)字節(jié)charaddr[30];//字符數(shù)組304整數(shù)}{charname[19];//字符數(shù)組19個(gè)字節(jié),往下char;//存放在上面字符數(shù)組charintage;//4個(gè)字節(jié)floatscore;//4個(gè)字節(jié)charaddr[30];//字符數(shù)組304整數(shù)}charname[20];//字符數(shù)組19個(gè)字節(jié),往下intage;//4個(gè)字節(jié)floatscore;//4個(gè)字節(jié)charaddr[30];//字符數(shù)組304整數(shù)}{intcharname[20];char;intage;floatscore;char}student1,student2定義兩個(gè)結(jié)構(gòu)體類型Studentstudent1,student2struct結(jié)構(gòu)體名{{}即“域”structDate//一個(gè)結(jié)構(gòu)體類型{intmonth;intday;intyear;struct{intcharname[20];char;intDatebirthday;char//定義student1和student2為結(jié)構(gòu)體類型例如,struct{intcharname[20]; intage;floatscore;charstudent1中的數(shù)據(jù)如圖7.2中所示。也可以采取類型與定義變量分開(kāi)的形式,在student2=在定義了結(jié)構(gòu)體變量以后,當(dāng)然可以這student1=可以一個(gè)結(jié)構(gòu)體變量中的一個(gè)成員例如,student1.num表示結(jié)構(gòu)體變量student1student1的值如圖student1.num的值為10001。如果成員本身也是一個(gè)結(jié)構(gòu)體類型,則要用若干個(gè)成員運(yùn)算符,一級(jí)一級(jí)地找到最低一例如,對(duì)上面定義的結(jié)構(gòu)體變量可以這樣各成員student1.num(結(jié)構(gòu)體變量student1中num成員)如果想student1變量中的birthday成員monthstudent1.month,必須逐級(jí),(結(jié)構(gòu)體變量student1中的birthday成month成員)例如,student1student2為結(jié)構(gòu)體只能對(duì)結(jié)構(gòu)體變量中的各個(gè)成員分別進(jìn)行由于“.”運(yùn)算符的優(yōu)先級(jí)最高,student1.age++相當(dāng)于(student1.age。++是cout<<&student1.age輸出例結(jié)構(gòu)體變量中的成員#include<iostream>usingnamespacestd;{intmonth;intday;int{intnum;charDatebirthday;//birthday為Date類型float//定 類型的變student1,student2student2初始化intmain()student1=student2;//student2各成員的student1的相應(yīng)成員cout<<student1.<<endl;//輸出student1 成 return0;}10002WangLif5/23/198289.5、個(gè)學(xué)生的學(xué)號(hào)、成績(jī)等數(shù)據(jù)。如果有10個(gè)、定定義結(jié)構(gòu)體數(shù)組和定義結(jié)構(gòu)體變量的方法相仿義結(jié)體數(shù)組只需其為數(shù)即可如{intcharname[20]; intage;floatscore;charStudentstu[3];//定義Studentstruct{intcharchar;intage;floatscore;char{intcharname[20];char;intage;floatscore;char結(jié)構(gòu)體數(shù)組的初始化與其他類型的數(shù)組一struct{intcharname[20];char;intage;floatscore;char{10101,″LiLin″,′M′,18,87.5,Beijing 19,99,″130Shanghai 20,78.5,″1010ZhongshanRoad″}};stu時(shí),也可以不指定元素個(gè)數(shù),stu[一個(gè)結(jié)構(gòu)體常量應(yīng)包括結(jié)構(gòu)體中全部成員Studentstu[]={{…},{…},{…}};//已事先Student={初值表列應(yīng)用舉下面舉一個(gè)簡(jiǎn)單的例子來(lái)說(shuō)明結(jié)構(gòu)體數(shù)組struct//結(jié)構(gòu)體類型{charname[20];intcount;}//定義類型的數(shù)組,內(nèi)容為3個(gè)候選intmain({intchar//如果與某一候選人的相同,就給他}return}Zhang↙(每次輸入一個(gè)候選人的)Li:4(輸出3個(gè)候選人的與最后得票數(shù))程序定義一個(gè)全局的結(jié)構(gòu)體數(shù)組leader,它有3name(姓在這個(gè)例子中,也可以不用字符數(shù)組而用string方法的字符串變量來(lái)存放數(shù)據(jù),程序#include<iostream>#include<string>usingnamespacestd;struct{intintmain({inti,j;stringleader_name;//leader_name為字符{}return}一個(gè)結(jié)構(gòu)體變量的指針就是該變量所占據(jù)指針變量也可以用來(lái)指向結(jié)構(gòu)體數(shù)組中的指向結(jié)構(gòu)體變量的指針結(jié)構(gòu)體變量中下面通過(guò)一個(gè)簡(jiǎn)單例子來(lái)說(shuō)明指向結(jié)構(gòu)體#include<string>usingnamespacestd;intmain(){struct{intnum;char;floatscore;Student//StudentstuStudent*p=&stu;//pStudent類型數(shù)據(jù)的指針變stu//string變量可以直接賦值num<<″″<<″″<<stu.<<″″<< -num<<″″<<(*p).name<<″″<<(*p).″return0;}10301WangFunf89.5通過(guò)結(jié)構(gòu)體變量名10301WangFunf89.5(通過(guò)指針結(jié)構(gòu)p->nump當(dāng)前指向的結(jié)構(gòu)體num。p->num和(*p).num同樣,p->name等價(jià)于(*p).name。.stu.nump->p->num。p->npp->n++p++p->np用結(jié)構(gòu)體變量和指向結(jié)構(gòu)體變量的指針構(gòu)head表示,可以看到鏈表中各元素在內(nèi)存中的單struct{intfloatStudent*next;//nextStudent量numscore是用戶需要用到的Student類型數(shù)據(jù)(就是next所在的結(jié)構(gòu)體類型next中即可。下面通過(guò)一個(gè)例子來(lái)說(shuō)明如何建立和輸出3個(gè)學(xué)生數(shù)據(jù)的#defineNULL0#include<iostream>structStudent{longnum;floatscore;structStudentintmain({Studenta.score=89.5;//對(duì)結(jié)點(diǎn)anum和score成b.score=90;//對(duì)結(jié)點(diǎn)bnum和scorec.score=85;//對(duì)結(jié)點(diǎn)cnum和scorea.next=&b;//ba結(jié)next成員b.next=&c;//cb結(jié)next成員c.next=NULL;//next成員不存放其p=headpa{cout<<p->num<<″″<<p-p=p->nextpwhilep!=NULLcpreturn}②p既可以通過(guò)上一個(gè)結(jié)點(diǎn)的next指針去也可以直接通過(guò)結(jié)構(gòu)體變量名a,b,c去。動(dòng)態(tài)鏈表則是指各結(jié)點(diǎn)是可以隨時(shí)插入和編輯本段將一個(gè)結(jié)構(gòu)體變量中的數(shù)據(jù)傳遞給另一個(gè)用結(jié)構(gòu)體變量的變量作函數(shù)參數(shù)。print中將它們的值輸出。#include<iostream>#include<string>usingnamespace{intnum;floatscore[3];intmain({voidprint(Student);//函數(shù),形參類型為Studentstu.num=12345;//以下5行對(duì)結(jié)構(gòu)體變量各return}voidprint(Student{ }1234567.589#include<iostream>#include<string>usingnamespacestd;structStudent{intnum;stringname;//string類型定義字float}stu={12345,″LiFung″,67.5,89,78.5};//定studentstu并賦初值intmain({voidprint(Student*);//函數(shù),形參為指Student類型數(shù)據(jù)的指針變量Student*pt=&stu;//定義基類型為return}//pStudent的voidprint(Student{cout<<p->num<<″″<<p->name<<″}printptstu的起始地址傳送給形參p(p也是基類型為student的指針變量p也就指向stu,printp所指向的結(jié)構(gòu)體變量的各個(gè)成它們也就是stu的成員main函數(shù)中也可以不定義指針變量pt,而在調(diào)用print函數(shù)時(shí)以&stustu的起始地址傳給p。圖#include<iostream>#include<string>usingnamespacestd;structStudent{intnum;stringname;floatscore[3];voidmain({voidprint(Student//函數(shù),形參為Student類型變量的用}//Studentvoidprint(Student{ }程序(3)Student類型變量,而形參用Student類型的,虛實(shí)結(jié)合時(shí)傳遞stu的地址,因而效率較高。它兼有(1)和(2)stringC++系統(tǒng)中編輯本段在C語(yǔ)言中是利用庫(kù)函數(shù)malloc和和delete來(lái)取代malloc和函數(shù)注意new和delete是運(yùn)算符不是函數(shù),和函數(shù),但建議用戶不用malloc和newdelete運(yùn)算符。newint;//開(kāi)辟一個(gè)存放整數(shù)的空間,返newint(100);//newchar[10];//開(kāi)辟一個(gè)存放字符數(shù)組(包括newint[5][4];//開(kāi)辟一個(gè)存放二維整型數(shù)組float*p=newfloat3.14159);//開(kāi)辟一個(gè)存放單精度數(shù)的空間,并指定該實(shí)數(shù)的初值為new[初值由于內(nèi)存不足等原因而無(wú)法正常分配空間,則newNULL,用戶可以根據(jù)該delete[]new開(kāi)辟的存放單精度delete前面用“newchar[10];”開(kāi)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 環(huán)氧乙烷(乙二醇)裝置操作工安全綜合測(cè)試考核試卷含答案
- 電子電氣產(chǎn)品能效檢驗(yàn)員持續(xù)改進(jìn)強(qiáng)化考核試卷含答案
- 礦井通風(fēng)工安全培訓(xùn)競(jìng)賽考核試卷含答案
- 凹版制版員安全生產(chǎn)基礎(chǔ)知識(shí)能力考核試卷含答案
- 燃?xì)廨斉鋱?chǎng)站運(yùn)行工崗前基礎(chǔ)實(shí)操考核試卷含答案
- 學(xué)生清明節(jié)回家掃墓的請(qǐng)假條
- 2025年聚烯烴類線纜項(xiàng)目發(fā)展計(jì)劃
- 2025年聲增敏保偏光纖合作協(xié)議書(shū)
- 遼寧省葫蘆島市2025-2026學(xué)年高一上學(xué)期1月期末考試政治試卷
- 2026年數(shù)字藝術(shù)品收藏項(xiàng)目公司成立分析報(bào)告
- 2026年中國(guó)航空傳媒有限責(zé)任公司市場(chǎng)化人才招聘?jìng)淇碱}庫(kù)有答案詳解
- 2026年《全科》住院醫(yī)師規(guī)范化培訓(xùn)結(jié)業(yè)理論考試題庫(kù)及答案
- 2026北京大興初二上學(xué)期期末語(yǔ)文試卷和答案
- 專題23 廣東省深圳市高三一模語(yǔ)文試題(學(xué)生版)
- 廣元市利州區(qū)何家坪石材廠飾面用灰?guī)r礦礦山地質(zhì)環(huán)境保護(hù)與土地復(fù)墾方案
- 保健按摩師初級(jí)試題
- 上腔靜脈綜合征的護(hù)理
- 2021年度四川省專業(yè)技術(shù)人員繼續(xù)教育公需科目(答案整合)
- 醫(yī)療廢物處理方案
- 船舶靠離泊作業(yè)風(fēng)險(xiǎn)辨識(shí)表
- DB37T 2673-2019醫(yī)療機(jī)構(gòu)能源消耗定額標(biāo)準(zhǔn)
評(píng)論
0/150
提交評(píng)論