三內(nèi)聯(lián)函數(shù)inlinefunction四引用和數(shù)值傳遞方式具體學(xué)習(xí)教案_第1頁
三內(nèi)聯(lián)函數(shù)inlinefunction四引用和數(shù)值傳遞方式具體學(xué)習(xí)教案_第2頁
三內(nèi)聯(lián)函數(shù)inlinefunction四引用和數(shù)值傳遞方式具體學(xué)習(xí)教案_第3頁
三內(nèi)聯(lián)函數(shù)inlinefunction四引用和數(shù)值傳遞方式具體學(xué)習(xí)教案_第4頁
三內(nèi)聯(lián)函數(shù)inlinefunction四引用和數(shù)值傳遞方式具體學(xué)習(xí)教案_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、會計(jì)學(xué)1三內(nèi)聯(lián)函數(shù)三內(nèi)聯(lián)函數(shù)inlinefunction四引用四引用(ynyng)和數(shù)值傳遞方式具體和數(shù)值傳遞方式具體第一頁,共22頁。2的檢查。n內(nèi)聯(lián)函數(shù)虛實(shí)結(jié)合處發(fā)生的替換稱為內(nèi)聯(lián)展開,內(nèi)聯(lián)展n開的結(jié)果是程序代碼的擴(kuò)大但執(zhí)行的時(shí)間減少從而效率趨n快。第1頁/共21頁第二頁,共22頁。3n指標(biāo),真實(shí)(zhnsh)的擴(kuò)展在函數(shù)的調(diào)用點(diǎn)進(jìn)行。為便于內(nèi)聯(lián)函數(shù)的n真實(shí)(zhnsh)展開,inline函數(shù)的定義一般應(yīng)放置在調(diào)用點(diǎn)之前。n C+引入inline函數(shù)的原因一是破除private或protectedn關(guān)鍵字導(dǎo)致的封裝弊端,二是減少宏展開的副作用。宏展開n是由#define預(yù)處理指令引入的代碼

2、重用的機(jī)制。第2頁/共21頁第三頁,共22頁。4n int x=a; int y =b;nvoid main (void) int t=x; x=y; y=t;n int a=1,b=2; printf (%d,%d;,x,y);n swap (a,b); / 內(nèi)層塊是swap(a,b)的內(nèi)聯(lián)展開n printf (%d,%dn,a,b); printf (%d,%dn,a,b); n輸出結(jié)果都為2,1;1,2,可見函數(shù)體中形參的變化不影響n實(shí)參變量(binling)。第3頁/共21頁第四頁,共22頁。5n int t=*x; *x=*y;*y=t; n void main (void) n

3、int a=1,b=2; n swap (&a,&b);n printf (%d,%d,a,b); n 第4頁/共21頁第五頁,共22頁。6,*x,*y);n int t=*x; *x=*y; *y=t;n /內(nèi)層塊是swap(&a,&b)的內(nèi)聯(lián)展開n printf (%d,%d,a,b);n 第5頁/共21頁第六頁,共22頁。7nn x=&a;y=&b;n t*(&a) ; *(&a) *(&b) ;*(&b) t n t a ; a b ;b t n運(yùn)算完畢從被調(diào)函數(shù)(hnsh)返回。第6頁/共21頁第七頁,共

4、22頁。8操作就是對于變量(binling)b的等價(jià)操作。通n過訪問指針形參可以改變主控函數(shù)變量(binling)的值。第7頁/共21頁第八頁,共22頁。9為左值。第8頁/共21頁第九頁,共22頁。10n r=4*n; *p=n*n; return n*n*n; n /變量數(shù)值形參n匹配右值3nvoid main()n int x,y,z; z=f (x,&y,3);n printf (%d,%d,%dn,x,y,z);n /輸出:12,9,27第9頁/共21頁第十頁,共22頁。11nvoid main (void) n int a=1,b=2; n swap (&a,&

5、;b);n printf (%d,%d,a,b); n 第10頁/共21頁第十一頁,共22頁。12n printf (%d,%d,a,b); n 第11頁/共21頁第十二頁,共22頁。13n / swap(a,b)的內(nèi)聯(lián)展開n printf (%d,%d,a,b);n第12頁/共21頁第十三頁,共22頁。14n嚴(yán)格地引用形參版本void swap(int &x,int &y) int t=x; nx=y; y=t;概念上對應(yīng)或映射指針的固定尋址版本即n void swap(int *const x,int n*const y) int t=*x; *x=*y;*y=t; 第13

6、頁/共21頁第十四頁,共22頁。15n法。n注意:n void f (int&)與 void f (int*)在實(shí)參的匹配上是不同的。nvoid f(int&)匹配int型的左值,void f(int*)匹配int*型的地址n表達(dá)式(右值)。第14頁/共21頁第十五頁,共22頁。16n double x=100, y=0;n*pmax (&x,&y)+=100; n printf (x=%f, y=%fn, x,y); n /程序(chngx)輸出:x=200.000000,y=0.000000第15頁/共21頁第十六頁,共22頁。17n rmax (x,y)+

7、=100;n printf (x=%f,y=%fn,x,y);nn /程序輸出:x=200.000000,y=0.000000第16頁/共21頁第十七頁,共22頁。18n的功能,但引用語法略微簡潔。根據(jù)兼容C的CFRONT策n略,右邊的代碼在幕后處理為左邊的代碼,然后轉(zhuǎn)換匯編語n言代碼。n pmax返回入口形參的指針,實(shí)質(zhì)上返回的是相應(yīng)實(shí)參n的地址,這個(gè)實(shí)參的地址指向主控函數(shù)的局部變量的內(nèi)存n區(qū)。變量的引用返回幾乎相當(dāng)于指針的數(shù)值返回。第17頁/共21頁第十八頁,共22頁。19的單元,對于雙精度型的數(shù)n據(jù),占8字節(jié)的單元。n對引用的操作是對相關(guān)變量的操作。第18頁/共21頁第十九頁,共22頁。20n可以說指針與引用都是變量的別名:n指針是變量的移動的間接(jin ji)別名,引用是變量的固定的n直接別名。指針是變動的,可以指向變量、數(shù)組、對象,對n于數(shù)據(jù)的流通提供了最高的靈活性。引用是凝固的,是指針n與變量的中介,引用保留了指針對數(shù)據(jù)的快速流通與變量名n的簡潔,是指針與變量典型的混合物。第19頁/共21頁第二十頁,共22頁。21第20頁/共21頁第二十一頁,共22頁。NoImage內(nèi)容(nirng)總結(jié)會計(jì)學(xué)。內(nèi)聯(lián)函數(shù)虛實(shí)結(jié)合處發(fā)生的替換稱為內(nèi)聯(lián)展開,內(nèi)聯(lián)展。/ 內(nèi)層塊是swap(a,b)的內(nèi)聯(lián)展開。在C+中參數(shù)傳遞方式分為兩種:數(shù)值傳遞方式,引用。引用形參可改變實(shí)參變量,數(shù)值形

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論