C 函式 函式指標

2021-08-01 17:56:49 字數 1397 閱讀 1803

區域性變數不能作為預設實參。

作為預設實參的名字在函式宣告所在的作用於內解析,而這些名字的求值過程發生在函式呼叫時:

sz wd = 80;

char def = '';

sz ht();

string screen(sz = ht(), sz = wd, char = def);

string window = screen(); //呼叫screen(ht,80,'')

用作預設實參的名字在函式宣告所在的作用域內解析,而這些名字的求值過程發生在函式呼叫時:

void f2()
將函式指定為內聯函式(inline),通常就是將它在每個呼叫點上「內聯地」展開。假設我們把shorterstring函式定義為內聯函式,則如下呼叫

cout<《將在編譯過程中展開成類似於下面的形式

cout<<(s1.size().size()?s1:s2)<;

從而消除了shorterstring函式的執行時呼叫開銷。在shorterstring函式的返回型別前面加上關鍵字inline,這樣就可以將它宣告成內聯函式了:

inline

const

string & shorterstring(const

string &s1, const

string &s2)

函式指標指向的是函式而非物件。和其他指標一樣,函式指標指向某種特定的型別。函式的型別由它的返回型別和形參共同決定,與函式名無關。例如:

//比較兩個string物件的長度

bool lengthcompare(const

string &, const

string &);

想要宣告乙個可以指向函式的指標,只需要用指標替換函式名即可:

bool (*pf)(const

string &, const

string &);//未初始化

我們把函式名作為乙個值使用時,該函式自動地轉換成指標。例如,按照如下形式我們可以將lengthcompare的位址賦給pf:

pf = lengthcompare; //pf指向名為lengthcompare的函式
使用時也可直接使用,無須提前解引用指標:

bool b1 = pf("hello","goodbye");    //呼叫lengthcompare

bool b2 = (*pf)("hello","goodbye"); //乙個等價呼叫

bool b3 = lengthcompare("hello","goodbye"); //另乙個等價呼叫

C 指標函式和函式指標

1 指標函式 1 基本概念 指標函式 顧名思義就是帶有指標的函式,即其本質是乙個函式,只不過這種函式返回的是乙個對應型別的位址。2 定義式 type func type type 如 int max int x,int y 3 例子詳解 cpp view plain copy 1.include 2...

c 指標函式和函式指標

函式指標與指標函式 1 函式指標 形式 返回型別 函式名 參數列 一種特殊的指標,它指向函式的入口 定義乙個函式指標p,只能指向返回值為int,形參為兩個int的函式 輸出結果 include stdafx.h include using namespace std int p int,int in...

C 函式指標與指標函式

函式指標 函式名本身代表著函式的位址,因此給函數指標賦值使可以不用加 符號 加也可以!void func int 定義乙個函式 void pf int 定義乙個函式指標 pf func 給函式指標賦值 int f x,y 其中x,y是形式引數,f是函式名,呼叫後返回乙個指向整型資料的位址指標。f x...