函式內部的變數屬於區域性變數,只在呼叫函式這一段時間內有效,函式一旦執行完畢,其中的變數就會自動撤銷,除非變數宣告為static,或者在函式內部使用來自外部的引用,或者是指標。
void swap1 ( int x,int y )
// exchange x and y
注意上面的函式,只是將 x ,y 在函式swap裡面的副本進行了交換,並沒有將原本的x , y 交換,所以使用了這個函式之後會發現,原本的 xy並沒有變化。
void swap2 (int & x, int & y )
int temp = y ;
y = x;
x = temp;
這個函式能夠正確的完成交換動作,因為使用的是 x , y原值的引用。
void swap3 (int *x ,int * y )
int *temp= y;
y = x ;
x = temp;
這個也能實現x y的交換,不過是講指標 xy的位址互換。
下面這個就比較繞
void ptrswap ( int *&x, int *&y )
// x is a reference to a pointer to int .simply ,x is another name of the parameter transmitd in .
對於函式的返回值,函式可以不返回任何值,也就是直接「return ; 」,但是也可以返回乙個同樣是void的函式的呼叫結果。
void x ( )
對於有返回值的函式,千萬不要返回區域性物件的引用,也不要返回區域性物件的指標。
const string &mip ( const string &s )
//wrong : returning reference to a local object!
一些函式具有預設實參,在宣告此類函式的時候,應該將具有預設實參的部分放在後方。
string s ( int x , int y = 10 , int z = 20);
!!!如果宣告中已經為預設的引數賦值了,那麼定義中就不要再次賦值了,宣告中和定義中只要為預設實參賦值一次就可以了,否則編譯出錯。
//內聯函式可以避免函式呼叫的開銷只需要在函式返回型別前面加上inline即可。
函式過載在另一篇文章中講到。
第七章 函式
1.ansi c 允許函式原型的使用,函式宣告提供給編譯器和之後的呼叫函式返回值型別,引數型別和數量的資訊,而k c用單獨的列表給出引數的型別,編譯器只記住函式的返回值型別,但不儲存函式的引數數量和型別 2.沒有return語句的函式,隱式的返回 3.函式的原型可以單獨放於乙個標頭檔案中,一定要具有...
第七章 函式
樂趣在於發現。程式設計最大的樂趣在於編寫自己的函式 使用c 函式步驟 1.函式定義 2.函式原型 3.呼叫函式 函式分為兩類 有返回值和沒有返回值的函式。void函式表示沒有返回值 void funcitonname parameterlist include using namespace std...
第七章 函式
1.千萬不要返回區域性物件的引用 理解返回引用至關重要的是 千萬不能返回區域性變數的引用。當函式執行完畢時,將釋放分配給區域性物件的儲存空間。此時,對區域性物件 的引用就會指向不確定的記憶體。考慮下面的程式 disaster function returns a reference to a loc...