C++中函數的調用

在C++中,要調用一個函數必須先申明這個函數,即在main()函數以前申明這個函數,但函數的定義則能夠放到main()函數以後。ios

對於一個給定的函數能夠進行屢次調用函數

當函數的調用時,函數的實參與形參傳遞方式有兩種:spa

第一種就是直接將實參(argument)傳遞給形參(variable),這種方式傳遞給函數體的值在函數體內部發生改變時不會影像到實參自己code

第二中是經過reference的方法將實參(argument)傳遞給形參(variable),reference方法僅在形參前加了一個ampersand符號,這種方式會把實參和形參關聯在一塊兒,在函數體內發生的參數變化會影像到實參的變化,例如:資源

// passing parameters by referencestring

#include <iostream>io

using namespace std;效率

void duplicate (int &a, int &b, int &c)stream

{   a*=2;   b*=2;   c*=2; }rsa

int main ()

{   int x=1, y=3, z=7;  

duplicate (x, y, z);

  cout << "x=" << x << ", y=" << y << ", z=" << z;  

return 0; }

 該函數將實參 x=1, y=3, z=7經過reference方式分別傳遞給形參a, b, c ,當a, b, c 在函數體內加倍時,實參也相應的發生變化,所以最後輸出結果會變成

x=2, y=6, z=14

引入reference方法的緣由

調用函數直接賦值等同於形參複製了實參的值,這種方法對於一長串字符來講顯得過於低效,所以能夠經過reference方法來賦值,reference方法不是單純的複製,所以能夠大大的提升函數調用的效率,而這種方法仍然存在一個問題,即在調用函數時並不但願參數發生變化,而這能夠經過const 關鍵字來保證,即在函數定義時,在函數的參數前加一個const關鍵字,例如

string concatenate (const string& a, const string& b)
{
  return a+b;
}

這樣定義的參數就不容許發生變化,同時採用reference方法來賦值以提升函數調用的效率。

inline 提升短小函數的調用效率

當一個函數體較小時,採用常規的函數調用方法會浪費資源,能夠經過inline來提升函數的使用效率,即在函數體的定義前加inline,這樣表示該函數在主函數中調用時不是遵循普通函數的call調用方法,而是直接將函數插入到主函數須要引用的地方,這樣提升了函數的使用效率。

相關文章
相關標籤/搜索