程序設(shè)計教案05function按值調(diào)用引用和常量_第1頁
程序設(shè)計教案05function按值調(diào)用引用和常量_第2頁
程序設(shè)計教案05function按值調(diào)用引用和常量_第3頁
程序設(shè)計教案05function按值調(diào)用引用和常量_第4頁
程序設(shè)計教案05function按值調(diào)用引用和常量_第5頁
已閱讀5頁,還剩40頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

REliable,REliable, ligent&ScalableEpisode部分來自于《C++Primer》

REliable, ligent&Scalable2

REliable, ligent&ScalableAAint*ip1,*ip2;int*ip1;inti=255;ip1=&i;

AAinti=255;int*pi=*pi=*pi+i加2ii2)pi=pi+2;

REliable, ligent&Scalable A

REliable, ligent&Scalableint*pi=0;doubledval;pi void*pv=pi;pv=pd;inti,j,k;int*pi=&i;*pi=*pi+i加2ii2)pi=pi+2;

REliable, ligent&Scalableintia[10int*iter=int*iter_end=while(iter!=iter_end){現(xiàn)在iter}

REliable, ligent&Scalableint*constintif(*curErr){*curErr= curErr= constint*cpintconst*constint*constcp//REliable, ligent&Scalableintival=int&refVal=ival;int&refVal2;

okrefVal是一個指向ival// intival=1024;int&refVal=ival;

REliable, ligent&Scalable REliable, ligent&Scalableintival=int*pi=&ival;int*&ptrVal2=

錯誤,refVal是int類型不是okrefPtrintmin_val=refVal ival被設(shè)置為min_val intii=int*pi=

REliable, ligent&Scalable//返 Matrixoperator+(constMatrix&,constMatrix&

REliable, ligent&Scalable constintarray_size=3;intix,jx,kx;int*iap[]={&ix,&jx,&kx};int&iar[]={ix,jx,kx};

ok類型為int*//錯誤:不允 intia2[]

REliable, ligent&Scalable–intia[5]==

3intint0001000100200300ia[2][2]=1

REliable, ligent&Scalable一般形式return_typename(formal //areturn_typename(formalarguments)body//aFordoublef(inta,doubled){returna*d;voidincrease_power(intFor{/*code*/}//atry{/*code*/}catch(exception&e){/*code*/}//atry

REliable, ligent&Scalableintabs(intiobj){return(iobj<0?-iobj:iobj);}intmin(intp1,intp2){return(p1<p2?p1:p2);}

REliable, ligent&Scalable (intv1,intv2while(v2)inttemp=v2;v2=v1%v2;v1=temp;

}return}

REliable, ligent&Scalable

REliable, ligent&Scalable boolIsPrimer(intx);intmain(){for(inti=2;i<10000;

} boolIsPrimer(intx);boolIsPrimer(int);

boollook_up(int*,intintcount(conststring&,char);voidsum(vector<int>&,int);classDate{/**/};Date&calendar(constchar*int[10]foo_bar();int*constboolis_equal(vector<int>v1,vector<int>v2

REliable, ligent&Scalable

REliable, ligent&Scalable

REliable, ligent&Scalable

REliable, ligent&Scalable

REliable, ligent&Scalable (intx1,intx2)?x (379,intabs(intiobjintmin(intp1,intp2 (intv1,intv2);intmain(){inti,…cout<<"\nmin:"<<min(i,j)<<i=abs(ij=abs(jcout<< :" (i,j)<<

REliable, ligent&Scalable}

REliable, ligent&Scalable//call-by-value(sendthefunctionacopyoftheargument?sintf(inta){a=a+1;returna;00int{intxx=cout<<f(xx)<<endl;//writes

copythe0cout<<xx<<endl;//writes0;f()doesn?tchange0intyy=cout<<f(yy)<<endl;//writes8;f()doesn?tchangecout<<yy<<endl;//writes7}7

7copythe7

REliable, ligent&Scalablevoidprint(constvector<double>&v){//pass-by-const-cout<<"{for(inti=0;i<v.size();++i)cout<<if(i!=v.size()-1)cout<<",}

Refertovd1in1stcout<<"}

Refertovd2in2ndvoidf(intx)vector<double>vd1(10);//smallvectorvector<double>vd2( );//largevector

77vector<double>vd3(x);//vectorofsomeunknownprint(vd1);}

REliable, ligent&Scalable//call-by-reference(passareferencetotheargument)intf(int&a){a=a+1;returna;}int

1stcall(referto{intxx=cout<<f(xx)<<endl;//writes//f()changedthevalueofxxcout<<xx<<endl; //writes1intyy=cout<<f(yy)<<endl;//writes//f()changesthevalueof

072ndcall(referto7cout<<yy<< //writes}

REliable, ligent&Scalable intincr1(inta){returna+1;}voidincr2(int&a){++a;}intx=x=incr1(x);//prettyincr2(x);//pretty

REliable, ligent&Scalablevoidf(inta,int&r,constint&cr){++a;++r;++cr;}//error:crisvoidg(inta,int&r,constint&cr){++a;++r;intx=cr;++x;}//int{intx=0;inty=0;intz=0;g(x,y,z);//x==0;y==1;g(1,2,3);//error:referenceargumentrneedsavariabletoreferg(1,y,3);//ok:sincecrisconstwecanpass“a}//constreferencesareveryusefulforpassinglarge

REliable, ligent&Scalable classImage{/*objectsarepotentiallyhuge*/voidf(Imagei);…f(my_image);//oops:thiscouldbes-l-o-o-o-voidf(Image&i);…f(my_image);//nocopy,butf()canmodifyvoidf(constImage&);…f(my_image);//f()won?tmesswithREliable, ligent&Scalable用在返回類型為void的函數(shù)——return;(可以被省略用在返回類型不為void的函數(shù)中:returnboolis_equal(constMatrix&m1,constMatrix&m2){if(m1.colSize()!=m2.colSize())if(m1.rowSize()!=m2.rowSize())for(introw=0;row<m1.rowSize();++row)for(intcol=0;col<m1.colSize();++col)if(m1[row][col]!=m2[row][col])returnfalse;

REliable, ligent&Scalable//returntrueis}

REliable, ligent&ScalableREliable, ligent&Scalable REliable, ligent&ScalableMatrix&add(Matrix&m1,Matrix&m2){Matrixresult;if(m1.isZero()if(m2.isZero())}

REliable, ligent&Scalable doubleleft=term(ts);Tokent}doubleleft=primary(ts);Tokent=ts.get();case'/'doubled=

REliable, ligent&ScalableTokent=ts.get();case'(':doubled=}}}

REliable, ligent&Scalable

REliable, ligent&Scalable 與一個函數(shù)相關(guān)的區(qū)被稱為活動記錄,活動記錄是在程序運行棧中分配的區(qū)。該區(qū)一直保持與該函數(shù)相關(guān)聯(lián),直到函數(shù)結(jié)束系統(tǒng)在函數(shù)的活動記錄中為函數(shù)的每個參數(shù)都提供了區(qū),參數(shù)的

REliable, ligent&Scalable

REliable, lige

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論