深入理解函式指標和函式陣列

2021-09-24 05:08:14 字數 1965 閱讀 4107

理解函式指標首先理解它的型別,首先函式指標是個指標,他指向乙個函式。其次與普通變數指標相同重要的一點是函式指標的型別,如果兩個函式的引數個數、參數列、返回值型別都相同,則這兩個函式是同乙個型別。換句話說同一型別的函式指標可以指向這兩個函式

我們先看乙個例子:

#include

using

namespace std;

typedef

intf2

(int

,int);

intfa

(int a,

int b)

intmain()

上面的 typedef int f2(int,int); 代表f2是乙個函式,函式的型別是 接受兩個int型別的引數,返回int型別的值

如果對上面的typedef int f2(int,int); 不理解可以進一步看介紹 typedef的部落格

現在定義乙個函式fa,他的型別與 f2 相同,那麼我們就可以定義乙個指向f2型別的指標c1指向fa。

那麼 *c1就是 fa 了,即(*c1)== fa。所以(*c1)(5,6) 就等效於 fa(5,6)了

另乙個特別之處是在c語言中函式指標的指標就等效於函式指標本身。直接的說

fa與&fa相同, *fa與fa相同

我們看這個例子:

#include

using

namespace std;

typedef

intf2

(int

,int);

intfa

(int a,

int b)

intmain()

那麼指標作為函式的引數又是怎樣呢?
#include

using

namespace std;

typedef

intf2

(int

,int);

intfa

(int a,

int b)

void

show

(int a,

int b,f2* c)

intmain()

上面的把fa函式的位址賦給 函式指標c,然後呼叫c指向的函式。

#include

using

namespace std;

typedef

intf2

(int

,int);

intfa

(int a,

int b)

intfb

(int a,

int b)

intfc

(int a,

int b)

f2* func[3]

;int

main()

最後是乙個擴充套件閱讀,c++11的lambda表示式

#include

using

namespace std;

typedef

intf2

(int

,int);

intmain()

; cout<5,6)

//輸出11

}

c++ lambda表示式部落格鏈結

首先函式指標是乙個指標,它指向乙個函式(指標的值是函式的位址).

兩個函式型別相同的充分必要條件是這兩個函式的參數列和返回值型別相同.

在c語言中,函式名稱等效函式的位址.

深入理解指標和陣列 指標和函式

指向函式指標陣列的指標 在了解了指標之後,可以得出,指標就是乙個變數,用來存放位址的變數。位址就相當於門牌號,而指標就是存放它的變數,對指標進行解引用 則相當於拿一把鑰匙去開對應的門牌號的門,開啟門,訪問其中的變數。指標的大小在32位平台上是4個位元組,在64位平台上是8個位元組。如有以下 先看下面...

深入理解指標函式

1.指標函式的定義 顧名思義,指標函式即返回指標的函式。其一般定義形式如下 型別名 函式名 函式引數表列 其中,字尾運算子括號 表示這是乙個函式,其字首運算子星號 表示此函式為指標型函式,其函式值為指標,即它帶回來的值的型別為指標,當呼叫這個函式後,將得到乙個 指向返回值為 的指標 位址 型別名 表...

深入理解指標函式

顧名思義,指標函式 即返回指標的函式。其一般定義形式如下 型別名 函式名 函式引數表列 其中,字尾運算子括號 表示這是乙個函式,其字首運算子星號 表示此函式為指標型函式,其函式值為指標,即它帶回來的值的型別為指標,當呼叫這個函式後,將得到乙個 指向返回值為 的指標 位址 型別名 表示函式返回的指標指...