準備花三天時間來好好謝謝c++函式的呼叫和返回。當然這裡參照網路的,還有一些書,來進行筆記。本章節分為
1、宣告引數和返回型別
函式是由返回型別,函式名,和函式名後邊括號內的形式引數列表組成的。例如 :
voidf(int a);//函式的宣告, 不會返回值 void
int g(int b,int c)//函式的定義
函式的定義包括大括號,以及在內部要執行的一些動作。函式返回型別為void時候,表示什麼也不做。
在函式宣告和定義中,你可以為引數命名也可以不命名,完全取決你需要。
如下面的函式 int my_find(vectorvs,string s,int hint);//有引數名字的
也可以這麼宣告 int my_find(vector,string ,int ); //無引數的。
但是,有引數命名的我們看了好看,習慣這麼寫。
當然我們在定義乙個函式的時候是要寫形參引數的。
//查詢s在vs中
int my_find(vectorvs,string s,int hint)
t t=fun();
這段**我們可以看到,我們利用函式fun()來初始化了值,也就是說 返回值可以作為變數初始化的一種形式。如果函式宣告要返回乙個值,那麼函式體內一定要有個return 返回乙個值,否則編譯時就會報錯;
double my_abs(int x)
尤其注意點的就是我們再利用vs,vc程式設計到時候返回值,是有所不同的。vs一般都是返回乙個int值,
上例子中,當我們x=0時,就會報錯了。沒有返回值
3、傳值引數與引用引數
這一節,以及下一節都是我要重點要講述的內容,因為它涉及了引用,在c++中,引用的使用是關係到了c++程式的效率等問題。
想函式傳遞引數是最簡單的方式是,將引數的值拷貝乙份,傳遞給函式,乙個函式的f()的引數實際是函式的區域性變數如下變得的例子就一目了然了
#include "stdafx.h" #include #include using namespace std; int func(int x) int _tmain(int argc, _tchar* argv)
從以上例子可以看出,乙個double如果按照八字節算,第乙個是80,第二個八百萬。如果x很大呢?這就會造成極大了浪費。
這個時候我們就開始使用下邊對函式print改一下
void print(const vector&v) void swap2(int& a,int& b) int _tmain(int argc, _tchar* argv) void incr2(int &x) int m=2; m=incr1(m); incr2(m);
這時候你會想到,效果一樣,為什麼還需要引用呢,但是一下情況你要知道:
用於操作容器
用於改變多個物件的函式
下面使用乙個函式說明一下void larger(vectorv1,vectorv2) { if(v1.size()!=v2.size()) error ("different size"); for(int i=0;i
c 學習筆記之函式的呼叫和返回
準備花三天時間來好好謝謝c 函式的呼叫和返回。當然這裡參照網路的,還有一些書,來進行筆記。本章節分為 1 宣告引數和返回型別 函式是由返回型別,函式名,和函式名後邊括號內的形式引數列表組成的。例如 voidf int a 函式的宣告,不會返回值 void int g int b,int c 函式的定...
C 學習筆記之呼叫建構函式和析構函式的順序
在一般情況下,呼叫析構函式的次序正好與呼叫析構函式的次序相反 最先被呼叫建構函式,其對應的析構函式最後被呼叫,而最後被呼叫的建構函式,其對應的析構函式最先被呼叫。1 在全域性範圍中定義的物件,它的建構函式在檔案中的所有函式 包含main函式 執行之前呼叫。如果乙個程式中有多個檔案,而不同的檔案中都定...
c 學習筆記(返回引用的函式)
宣告出處 在c 語言中,由類宣告的物件,和其它型別宣告的變數一樣,同樣可以通過傳值 引用和指標的方式作為函式的引數或函式返回值。最好不要採用傳值的方式傳遞和返回物件,這是因為採用傳值的方式傳遞和返回物件的過程中需要經歷物件間的拷貝操作,這樣會在一定程度上降低程式執行的效率,從而使得待處理資料量增大,...