c 中函式的介紹(第七章)

2021-07-13 04:43:23 字數 1151 閱讀 5981

函式內部的變數屬於區域性變數,只在呼叫函式這一段時間內有效,函式一旦執行完畢,其中的變數就會自動撤銷,除非變數宣告為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...