c++函數模塊與其相關內容
阿新 • • 發佈:2018-06-23
backup != for wap sum c語言 In initial 例如 一 函數的基本內容:
(1) 關於函數的定義:
通常分為有返回值與無返回值兩類
(1) 關於函數的定義:
通常分為有返回值與無返回值兩類
void functionname( parameter list) { statements ; return ; } void functionname( parameter list) { statements ; return var ; }
(2) 數組作為函數參數:
int fill_array(double ar [] , int limit ); int fill_array(double * ar , int limit ); // 都是在傳遞數組的地址,這個是一維函數的傳遞方式 int fill_array( double (* ar)[5] , int limit ); int fill_array( double ar [ ][5] , int limit ); // 二維函數的傳遞方式
但在c++ 中用的更多的還是“超尾”的方法來實現的,也就是傳遞數組的首地址與尾地址來實現的,例如:
int sum_arr ( const int * begin , const int * end ) { const int * pt ; int total ; for ( pt = begin ; pt != end ; pt++ ) total = total + *pt ; return total ; }
(3) 使用const在參數中:
以下面的這個例子來表明const在函數參數中的作用。
const int * const pt = &age ;
其中第一個const表示pt所指向的那個數據是不可更改的;
而第二個const表明不可更改這個指針的指向。
(4)函數與array對象:
void show( std::array<double,5> da );
void show( std::array<double,5> * da );
// 使用的方式基本與數組相同 , 但是要註意一點
// 在使用指針時 da不同與數組那樣是數組的地址,所以在使用時需要用
// (* da)來解除指針
(5)關於函數指針:
const double * ( *pa) ( const double * , int ) ;
/*
其中const double * 表示的是返回值的類型,
為double 類型的指針;
而(*pa) 則是表明這是一個函數的指針。
*/
const double * ( *pa[3]) ( const double * , int ) ;
// 表示為一個函數指針的數組
二 函數的深入內容:
1 內聯函數:
在任意函數聲明或函數定義前加上關鍵字 inline ,那麽這個函數就成為了內聯函數。
內聯的作用與c語言中的宏函數作用基本相同。
2 引用變量:
int initial = value ;
int & backup = initial ;
在此中引用變量與原變量共用同一個地址,也就是說他們訪問的其實是同一個內存單元;
在c++中使用引用這一特性,可以在函數減少一層指針的嵌套
***但註意一點***:
當返回的類型為引用變量時需要註意絕不反回臨時變量,因為此時臨時變量在函數返回
時已經被釋放,而返回為引用,兩者使用同一個內存地址。但由於已經被釋放,此時已
是非法訪問。
3 默認參數:
在函數的參數列表後加入 = value , 即設置了初始的值 ,如
int harpo ( int n , int m = 6 , int j = 8) ;
// 此時默認在參數沒有傳遞時,m為6,j為8
4 函數重載與函數模板:
(1) 所謂的重載就是同一個函數名有不同的功能。
函數重載只需要參數列表的類型不同則可實現
(2) 使用模板:
template < typename T>
void Swap (T & a , T &b ){
T temp ;
T = a ;
a = b ;
b = T ;
}
// 同樣的函數模板也是可以重載的只要參數的列表構成不同即可。
在對結構體操作時需要對其使用顯式聲明
template<> void Swap<struct name >( name & j1 , name & j2 );
ps:
關於一些簡單的數據格式化內容:
cout.setf( ......... ) // 添加入所需要的格式化方式
ios_base::fixed ios_base::showpoint
cout.precision(n) // 設置輸出小數為n位
cout.width(n) // 設置下次輸出的長度,僅作用一次,需要重復設置
c++函數模塊與其相關內容