(1)函數的定義格式如下所示。
<類型><函數名>(<形參表>)
{
<若干條語句>
}
其中,<類型>包含存儲類和數據類型。存儲類省略為外部函數,加static為內部函數;數據類型又稱函數返回值的類型,不可省略。<函數名>同標識符,<形參表>中可以有一個或多個參數,多不參數用逗號分隔,也可以沒有參數。以上是函數頭。函數體是由一對花括號括起來的若干條語句。如果函數體內無語句,稱為空函數。
(2)函數的說明方法是使用函數的原型,即函數頭,它包含了<類型>、<函數名>和函數參數的類型及個數。凡是定義在后,調用在先,調用之前都必須說明。
(3)函數的類型是該函數返回值的類型。函數的值是該函數的返回值。一個有返回值的函數中需要一條帶表達式的返回語句,其格式如下所示。
return<表達式>;
(4)函數的調用方式有傳值調用和引用調用兩種。傳值調用中又有傳送變量或表達式的值和傳送變量地址值兩種。這與C語言中的函數調用相同。引用
調用是C語言中的一種重要調用方式。
(5)引用調用時形參使用變量名,實參用引用名。這種調用具有傳址調用的特點:一是提高運行效果,因為只傳遞地址值。二是被調用函數通過改變形參值可以改變實參值。在C+程序中多用引用調用替代傳址調用,使之使用起來簡單明了而且容易
(6)C+語言允許設置函數參數的默認值。但在設置時應注意先設置右邊的參數,不允許在已設置默認值的參數的右邊還有沒設置默認值的參數。可設置一個參數的默認值,也可以設置所有參數的默認值。在函數調用中,如果實參沒有給出值時,使用形參的默認值,如果實參給定值時,使用實參值而不用默認值。
(7)C+語言中引進了內聯函數概念。在編譯時,將程序中出現的內聯函數的調用表達式用內聯函數的函數體來進行替換。內聯函數定義時在函數頭前加關鍵字 inline。內聯函數不允許使用循環和開關語句。關鍵字inline 必須與函數定義體放在一起才能使函數成為內聯,僅將inline 放在函數聲明前面不起任何作用。
定義在類聲明之中的成員函數將自動地成為內聯函數
(8)C語言允許函數重載,即允許同一個函數名對應着多個不同的函數實現。進行函數重載時,要求同名函數在參數的個數、類型和順序上有所區別,以便區別不同的函數實現。
(9)函數允許嵌套調用和遞歸調用。
/*編程計算某個正整數的階乘,假定從鍵盤上輸入一個數存入變量n中,求n!*/ #include <iostream> using namespace std; long int fac(int n); int main() { int n; cout<<"Input a positive integer:"; cin >>n; long fa=fac(n); cout<<n<<"!="<<fa<<endl; return 0; } long int fac(int n) { long int p; if(n==0) p=1; else p=n*fac(n-1); return p; }
(10)C++中作用域的種類有程序級、文件級、類級、函數級和塊級。
(11)變量的存儲類可分為自動類、寄存器類、外部類和靜態類,不同存儲類的變量和對象的作用域不同,壽命也不同。
(12)函數的存儲類分為內部函數和外部函數。