#include
using
namespace
std;
inline
void printa()
void printb(int ,int a=4)
void printc(int a, int b, int c = 3, int d = 4){}//預設引數寫右邊
typedef
void(mytypefunc)(int a, int b);//定義函式型別mytypefunc
typedef
void(*mytypefunc2)(int a, int b);//定義函式指標型別mytypefunc2
int main()
預設引數
1)c++中可以在函式宣告時為引數提供乙個預設值,當函式呼叫時沒有指定這個引數的值,編譯器會自動用預設值代替
只有引數列表後面部分的引數才可以提供預設引數值
2)一旦在乙個函式呼叫中開始使用預設引數值,那麼這個引數後的所有引數都必須使用預設引數值
//預設引數
void printab(int x = 3)
//在預設引數規則 ,如果預設引數出現,那麼右邊的都必須有預設引數
void printabc(int a, int b, int x = 3, int y=4, int z = 5)
int main62(int argc, char *argv)
函式佔位引數
/*
佔位引數只有引數型別宣告,而沒有引數名宣告
一般情況下,在函式體內部無法使用佔位引數
*/int func(int a, int b, int )
int main01()
int func2(int a, int b, int = 0)
void main()
函式指標
形式:返回型別(*函式名)(參數列)
char(*pfun)(int);
char glfun(int a)
void main()
第一行定義了乙個指標變數pfun。首先我們根據前面提到的「形式1」認識到它是乙個指向某種函式的指標,這種函式引數是乙個int型,返回值是char型別。只有第一句我們還無法使用這個指標,因為我們還未對它進行賦值。
第二行定義了乙個函式glfun()。該函式正好是乙個以int為引數返回char的函式。我們要從指標的層次上理解函式——函式的函式名實際上就是乙個指標,函式名指向該函式的**在記憶體中的首位址
然後就是main()函式了,它將函式glfun的位址賦值給變數pfun。main()函式的第二句中「*pfun」顯然是取pfun所指向位址的內容,當然也就是取出了函式glfun()的內容,然後給定引數為2。
typedef申明函式指標
形式:typedef 返回型別(*新型別)(參數列)
typedef
char (*ptrfun)(int);
ptrfun pfun;
char glfun(int a)
void main()
typedef的功能是定義新的型別。第一句就是定義了一種ptrfun的型別,並定義這種型別為指向某種函式的指標,這種函式以乙個int為引數並返回char型別。後面就可以像使用int,char一樣使用ptrfun了。
第二行的**便使用這個新型別定義了變數pfun,此時就可以像使用形式1一樣使用這個變數了。
c 函式過載與預設引數
函式過載 是指同一作用域內,一組具有相同函式名,不同引數列表的函式,構成過載關係,這組名稱相同的函式成為過載函式。過載函式通常完成的功能相近,這樣做的好處是減少了函式名的數量,提高了程式的可讀性。注意 過載與函式的返回型別無關,引數相同僅返回值不同的兩個函式不構成過載關係,與形參名字無關,只與引數的...
函式預設引數(C )
大家都知道在c 中,我們可以為方法的引數指定乙個預設值,像這樣 void foo int i 100 當我們以這種形式呼叫方法的時候 foo 實際上引數i被賦於了預設值,所以相當於呼叫了foo 100 然而在c 中是不支援引數的預設值的,那麼如果我們要用到類似的功能應該怎麼實現呢?考慮下面這個例子 ...
C 函式預設引數
使用預設引數時的注意事項 有函式宣告 原型 時,預設引數可以放在函式宣告或者定義中,但只能放在二者之一 double sqrt double f 1.0 函式宣告 double sqrt double f 函式定義 沒有函式 原型 時,預設引數在函式定義時指定.沒有 函式宣告 double sqrt...