版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
人生充滿(mǎn)著期待,夢(mèng)想連接著未來(lái)。什么是結(jié)構(gòu)體?簡(jiǎn)單的來(lái)說(shuō)結(jié)構(gòu)體就是一個(gè)可以包含不同數(shù)據(jù)類(lèi)型的一個(gè)結(jié)構(gòu)它是一種可以自己定義的數(shù)據(jù)類(lèi)型它的特點(diǎn)和數(shù)組主要有兩點(diǎn)不同首先結(jié)構(gòu)體可以在一個(gè)結(jié)構(gòu)中聲明不同的數(shù)據(jù)類(lèi)型第二相同結(jié)構(gòu)的結(jié)構(gòu)體變量是可以相互賦值的而數(shù)組是做不到的因?yàn)閿?shù)組是單一數(shù)據(jù)類(lèi)型的數(shù)據(jù)集合它本身不是數(shù)據(jù)類(lèi)型(而結(jié)構(gòu)體是)數(shù)組名稱(chēng)是常量指針?biāo)圆豢梢宰鰹樽笾颠M(jìn)行運(yùn)算所以數(shù)組之間就不能通過(guò)數(shù)組名稱(chēng)相互復(fù)制了即使數(shù)據(jù)類(lèi)型和數(shù)組大小完全相同定義結(jié)構(gòu)體使用struct修飾符例如:structtest{floata;intb;};上面的代碼就定義了一個(gè)名為test的結(jié)構(gòu)體它的數(shù)據(jù)類(lèi)型就是test它包含兩個(gè)成員a和b成員a的數(shù)據(jù)類(lèi)型為浮點(diǎn)型成員b的數(shù)據(jù)類(lèi)型為整型由于結(jié)構(gòu)體本身就是自定義的數(shù)據(jù)類(lèi)型定義結(jié)構(gòu)體變量的方法和定義普通變量的方法一樣testpnl;這樣就定義了一test結(jié)構(gòu)體數(shù)據(jù)類(lèi)型的結(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)體類(lèi)型定義結(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開(kāi)辟結(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)部要在棧空間開(kā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ò)程不開(kāi)辟任何新的內(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)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025軟件開(kāi)發(fā)合同范本
- 2025關(guān)于中國(guó)銀行購(gòu)車(chē)借款合同書(shū)范本
- 二零二五年度酒店裝修施工及智能化系統(tǒng)升級(jí)合同2篇
- 二零二五年度海事工程船員聘用及施工安全合同3篇
- 農(nóng)村教育環(huán)境改善與教育資源整合
- 2025外匯借款合同版范文
- 2025年度貨物采購(gòu)與分包合作協(xié)議2篇
- 鄭州信息科技職業(yè)學(xué)院《材料化學(xué)基礎(chǔ)(二)》2023-2024學(xué)年第一學(xué)期期末試卷
- 鄭州經(jīng)貿(mào)學(xué)院《電子學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025年牛津譯林版九年級(jí)物理上冊(cè)月考試卷含答案
- 醫(yī)療器械經(jīng)營(yíng)質(zhì)量管理規(guī)范培訓(xùn)課件
- 外貿(mào)經(jīng)理年終工作總結(jié)
- 2024屆新疆維吾爾自治區(qū)烏魯木齊市高三上學(xué)期第一次質(zhì)量監(jiān)測(cè)生物試題【含答案解析】
- 貴州省黔西南州2023-2024學(xué)年七年級(jí)上學(xué)期期末數(shù)學(xué)試卷(含答案)
- 數(shù)控加工技術(shù)-數(shù)控銑床的編程
- 天文基礎(chǔ)知識(shí)入門(mén)教程
- 《區(qū)塊鏈原理詳解》課件
- 護(hù)士長(zhǎng)競(jìng)聘上崗面試題及答案
- 廣東省中山市2023-2024學(xué)年四年級(jí)上學(xué)期期末數(shù)學(xué)試卷
- 舞臺(tái)機(jī)械管理制度
- 員工安全行為激勵(lì)機(jī)制的設(shè)計(jì)與實(shí)施方案解析
評(píng)論
0/150
提交評(píng)論