




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
人生充滿著期待,夢(mèng)想連接著未來(lái)。什么是結(jié)構(gòu)體?簡(jiǎn)單的來(lái)說(shuō)結(jié)構(gòu)體就是一個(gè)可以包含不同數(shù)據(jù)類型的一個(gè)結(jié)構(gòu)它是一種可以自己定義的數(shù)據(jù)類型它的特點(diǎn)和數(shù)組主要有兩點(diǎn)不同首先結(jié)構(gòu)體可以在一個(gè)結(jié)構(gòu)中聲明不同的數(shù)據(jù)類型第二相同結(jié)構(gòu)的結(jié)構(gòu)體變量是可以相互賦值的而數(shù)組是做不到的因?yàn)閿?shù)組是單一數(shù)據(jù)類型的數(shù)據(jù)集合它本身不是數(shù)據(jù)類型(而結(jié)構(gòu)體是)數(shù)組名稱是常量指針?biāo)圆豢梢宰鰹樽笾颠M(jìn)行運(yùn)算所以數(shù)組之間就不能通過(guò)數(shù)組名稱相互復(fù)制了即使數(shù)據(jù)類型和數(shù)組大小完全相同定義結(jié)構(gòu)體使用struct修飾符例如:structtest{floata;intb;};上面的代碼就定義了一個(gè)名為test的結(jié)構(gòu)體它的數(shù)據(jù)類型就是test它包含兩個(gè)成員a和b成員a的數(shù)據(jù)類型為浮點(diǎn)型成員b的數(shù)據(jù)類型為整型由于結(jié)構(gòu)體本身就是自定義的數(shù)據(jù)類型定義結(jié)構(gòu)體變量的方法和定義普通變量的方法一樣testpnl;這樣就定義了一test結(jié)構(gòu)體數(shù)據(jù)類型的結(jié)構(gòu)體變量pnl結(jié)構(gòu)體成員的訪問(wèn)通過(guò)點(diǎn)操作符進(jìn)行pn1.a=10就對(duì)結(jié)構(gòu)體變量pnl的成員a進(jìn)行了賦值操作注意:結(jié)構(gòu)體生命的時(shí)候本身不占用任何內(nèi)存空間只有當(dāng)你用你定義的結(jié)構(gòu)體類型定義結(jié)構(gòu)體變量的時(shí)候計(jì)算機(jī)才會(huì)分配內(nèi)存結(jié)構(gòu)體同樣是可以定義指針的那么結(jié)構(gòu)體指針就叫做結(jié)構(gòu)指針結(jié)構(gòu)指針通過(guò)->符號(hào)來(lái)訪問(wèn)成員下面我們就以上所說(shuō)的看一個(gè)完整的例子:#include<iostream>#include<string>usingnamespacestd;structtest//定義一個(gè)名為test的結(jié)構(gòu)體{inta;//定義結(jié)構(gòu)體成員aintb;//定義結(jié)構(gòu)體成員b};voidmain(){testpn1;//定義結(jié)構(gòu)體變量pn1testpn2;//定義結(jié)構(gòu)體變量pn2pn2.a=10;//通過(guò)成員操作符.給結(jié)構(gòu)體變量pn2中的成員a賦值pn2.b=3;//通過(guò)成員操作符.給結(jié)構(gòu)體變量pn2中的成員b賦值pn1=pn2;//把pn2中所有的成員值復(fù)制給具有相同結(jié)構(gòu)的結(jié)構(gòu)體變量pn1cout<<pn1.a<<”|"<<pn1.b<<endl;cout<<pn2.a<<”|"<<pn2.b<<endl;test*point;//定義結(jié)構(gòu)指針point=&pn2;//指針指向結(jié)構(gòu)體變量pn2的內(nèi)存地址cout<<pn2.a<<”|"<<pn2.b<<endl;point->a=99;//通過(guò)結(jié)構(gòu)指針修改結(jié)構(gòu)體變量pn2成員a的值cout<<pn2.a<<”|"<<pn2.b<<endl;cout<<point->a<<"|"<<point->b<<endl;cin.get();}總之結(jié)構(gòu)體可以描述數(shù)組不能夠清晰描述的結(jié)構(gòu)它具有數(shù)組所不具備的一些功能特性結(jié)構(gòu)體變量是如何作為函數(shù)參數(shù)進(jìn)行傳遞的#include<iostream>#include<string>usingnamespacestd;structtest{charname[10];floatsocre;};voidprint_score(testpn)//以結(jié)構(gòu)變量進(jìn)行傳遞{cout<<<<”|"<<pn.socre<<endl;}voidprint_score(test*pn)//—結(jié)構(gòu)指針作為形參{cout<<pn->name<<"|"<<pn->socre<<endl;}voidmain(){testa[2]={{"marry”88.5}{"jarck"98.5}};intnum=sizeof(a)/sizeof(test);for(inti=0;i<num;i++){print_score(a[i]);}for(inti=0;i<num;i++){print_score(&a[i]);}cin.get();}voidprint_score(test*pn)的效率是要高過(guò)voidprint_score(testpn)的因?yàn)橹苯觾?nèi)存操作避免了??臻g開辟結(jié)構(gòu)變量空間需求節(jié)省內(nèi)存?zhèn)鬟f結(jié)構(gòu)引用的例子利用引用傳遞的好處很多它的效率和指針相差無(wú)幾但引用的操作方式和值傳遞幾乎一樣種種優(yōu)勢(shì)都說(shuō)明善用引用可以做到程序的易讀和易操作它的優(yōu)勢(shì)尤其在結(jié)構(gòu)和大的時(shí)候避免傳遞結(jié)構(gòu)變量很大的值節(jié)省內(nèi)存提高效率#include<iostream>#include<string>usingnamespacestd;structtest{charname[10];floatsocre;};voidprint_score(test&pn)//以結(jié)構(gòu)變量進(jìn)行傳遞{cout<<<<”|"<<pn.socre<<endl;}voidmain(){testa[2]={{"marry”88.5}{"jarck"98.5}};intnum=sizeof(a)/sizeof(test);for(inti=0;i<num;i++){print_score(a[i]);}cin.get();}上面我們說(shuō)明了易用引用對(duì)結(jié)構(gòu)體進(jìn)行操作的優(yōu)勢(shì)下面我們重點(diǎn)對(duì)比兩個(gè)例程進(jìn)一部分析關(guān)于效率的問(wèn)題//―列程1//#include<iostream>#include<string>usingnamespacestd;structtest{charname[10];floatsocre;};voidprint_score(test&pn){cout<<<<”|"<<pn.socre<<endl;}testget_score(){testpn;cin>>>>pn.socre;returnpn;}voidmain(){testa[2];intnum=sizeof(a)/sizeof(test);for(inti=0;i<num;i++){a[i]=get_score();}cin.get();for(inti=0;i<num;i++){print_score(a[i]);}cin.get();}// 例程2 #include<iostream>#include<string>usingnamespacestd;structtest{charname[10];floatsocre;};voidprint_score(test&pn){cout<<<<”|"<<pn.socre<<endl;}voidget_score(test&pn){cin>>>>pn.socre;}voidmain(){testa[2];intnum=sizeof(a)/sizeof(test);for(inti=0;i<num;i++){get_score(a[i]);}cin.get();for(inti=0;i<num;i++){print_score(a[i]);}cin.get();}例程2的效率要遠(yuǎn)高過(guò)例程1的原因主要有以下兩處:第一:例程1中的testget_score(){testpn;cin>>>>pn.socre;returnpn;}調(diào)用的時(shí)候在內(nèi)部要在棧空間開辟一個(gè)名為pn的結(jié)構(gòu)體變量程序pn的時(shí)候又再次在棧內(nèi)存空間內(nèi)自動(dòng)生成了一個(gè)臨時(shí)結(jié)構(gòu)體變量temp在前面的教程中我們已經(jīng)說(shuō)過(guò)它是一個(gè)copy而例程2中的:voidget_score(test&pn){cin>>>>pn.socre;}卻沒(méi)有這一過(guò)程不開辟任何新的內(nèi)存空間也沒(méi)有任何臨時(shí)變量的生成AA" 第-二二:例程1在mian()中必須對(duì)返回的結(jié)構(gòu)體變量進(jìn)行一次結(jié)構(gòu)體變量與結(jié)構(gòu)體變量直接的相互賦值操作for(inti=0;i<num;i++){a[i]=get_score();}而例程2中由于是通過(guò)內(nèi)存地址直接操作所以完全沒(méi)有這一過(guò)程提高了效率for(inti=0;i<num;i++){get_score(a[i]);}函數(shù)也是可以返回結(jié)構(gòu)體應(yīng)用的例子如下:#include<iostream>#include<string>usingnamespacestd;structtest{charname[10];floatsocre;};testa;test&get_score(test&pn){cin>>>>pn.socre;returnpn;}voidprint_score(test&pn){cout<<<<”|"<<pn.socre<<endl;}voidmain(){test&sp=get_score(a);cin.get();cout<<<<”|"<<sp.socre;cin.get();}調(diào)用get_score(a);結(jié)束并返回的時(shí)候函數(shù)內(nèi)部沒(méi)有臨時(shí)變量的產(chǎn)生返回直接吧全局結(jié)構(gòu)變量a的內(nèi)存地址賦予結(jié)構(gòu)引用sp最后提一下指針的引用定義指針的引用方法如下:voidmain(){int
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- (2025年)甘肅省張掖市【輔警協(xié)警】筆試模擬考試試題含答案
- (2025年)甘肅省白銀市輔警協(xié)警筆試筆試預(yù)測(cè)試題含答案
- 2025至2030ABS傳感器行業(yè)市場(chǎng)占有率及投資前景評(píng)估規(guī)劃報(bào)告
- 曲藝協(xié)會(huì)內(nèi)部活動(dòng)方案
- 景區(qū)尋寶活動(dòng)方案
- 最美all活動(dòng)策劃方案
- 楓橋景區(qū)活動(dòng)方案
- 智慧社區(qū)項(xiàng)目活動(dòng)方案
- 春節(jié)部門活動(dòng)方案
- 春節(jié)爬山活動(dòng)方案
- 配合、協(xié)調(diào)、服務(wù)方案
- 2025年中學(xué)教師綜合素質(zhì)考點(diǎn)梳理
- 施工現(xiàn)場(chǎng)檢查表及問(wèn)題清單
- 河北省職業(yè)院?!靶虏牧现悄苌a(chǎn)與檢驗(yàn)”(中職組)技能大賽考試題庫(kù)(含答案)
- 物理-2025年中考終極押題猜想(廣州專用)(原卷版)
- 勞工人權(quán)培訓(xùn)
- 慢性乙型肝炎防治指南(2022年版)解讀
- 技師機(jī)械類選擇題及答案
- ±800kV直流架空輸電線路設(shè)計(jì)技術(shù)規(guī)程
- GB/T 15822.1-2024無(wú)損檢測(cè)磁粉檢測(cè)第1部分:總則
- 電梯操作證及電梯維修人員資格(特種作業(yè))考試題及答案
評(píng)論
0/150
提交評(píng)論