C++函數

來源:互聯網
上載者:User

通過使用函數(functions)我們可以把我們的程式以更模組化的形式組織起來,從而利用C++所能提供的所有結構化編程的潛力。

一個函數(function)是一個可以從程式其它地方調用執行的語句塊。以下是它的格式:

type name ( argument1, argument2, ...) statement

  • type 是函數返回的資料的類型
  • name 是函數被調用時使用的名
  • argument 是函數調用需要傳入的參量(可以聲明任意多個參量)。每個參量(argument)由一個資料類型後面跟一個標識名稱組成,就像變數聲明中一樣(例如,int x)。參量僅在函數範圍內有效,可以和函數中的其它變數一樣使用, 它們使得函數在被調用時可以傳入參數,不同的參數用逗號(comma)隔開.
  • statement 是函數的內容。它可以是一句指令,也可以是一組指令組成的語句塊。如果是一組指令,則語句塊必須用花括弧{}括起來,這也是我們最常見到情況。其實為了使程式的格式更加統一清晰,建議在僅有一條指令的時候也使用花括弧,這是一個良好的編程習慣

一個函數的例子:

 

#include <stdio.h>

int add(int a, int b)
{
int r;
r=a+b;
return (r);
}

int main ()
{
int z;
z = add(5,3);
printf("The result is %d\n", z);
return 0;
}

 

函數參數按地址傳遞:

#include <stdio.h>

void swap(int& a, int& b)
{
int temp =a;
a = b;
b = temp;
}

int main ()
{
int x = 1, y = 3;
printf("begin swap:x=%d,y=%d\n", x, y);
swap(x, y);
printf("after swap:x=%d,y=%d\n", x, y);
return 0;
}

 

函數參數的預設值:

當聲明一個函數的時候我們可以給每一個參數指定一個預設值。如果當函數被調用時沒有給出該參數的值,那麼這個預設值將被使用。指定參數預設值只需要在函式宣告時把一個數值賦給參數。如果函數被調用時沒有數值傳遞給該參數,那麼預設值將被使用。但如果有指定的數值傳遞給參數,那麼預設值將被指定的數值取代。例如

#include <stdio.h>
int divide(int a, int b=2) {
int r;
r=a/b;
return (r);
}
int main () {
printf("divide(12) = %d\n", divide(12));
printf("divide(20,4) = %d\n", divide(20,4));
return 0;
}

函數重載

兩個不同的函數可以用同樣的名字,只要它們的參量(arguments)的原型(prototype)不同,也就是說你可以把同一個名字給多個函數,如果它們用不同數量的參數,或不同類型的參數。例如:

#include <stdio.h>
int divide(int a, int b) {
return (a/b);
}

float divide(float a, float b) {
return (a/b);
}

int main () {
int x=5,y=2;
float m=5.0, n=2.0;
printf("divide(x, y) = %d\n", divide(x, y));
printf("divide(m, n) = %f\n", divide(m, n));
return 0;
}

inline 函數

  inline指令可以被放在函式宣告之前,要求該函數必須在被調用的地方以代碼形式被編譯。這相當於一個宏定義(macro)。它的好處只對短小的函數有效,這種情況下因為避免了調用函數的一些常規操作的時間(overhead),如參數堆棧操作的時間,所以編譯結果的運行代碼會更快一些。

它的聲明形式是:

inline type name ( arguments ... ) { instructions ... }

    它的調用和其他的函數調用一樣。調用函數的時候並不需要寫關鍵字inline ,只有在函式宣告前需要寫。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.