函式指標詳解

2021-09-05 01:17:50 字數 1978 閱讀 9679

這篇文章把函式指標的各種常用情況做了乙個詳解的總結。

1. 指向普通函式的指標

很簡單,如下的例子可以說明基本格式和用法:

int int_add(int a, int b)

int int_sub(int a, int b)

int (*int_operator)(int, int) = int_add;

int _tmain(int argc, _tchar* argv)

int cmp_str(const char *str1, const char *str2)

typedef int(*pcmp_func)(const char*, const char*);

pcmp_func pcmpfuncs[2] =

;// 宣告指向pcmpfuncs的指標

pcmp_func (*ppcmps)[2] = &pcmpfuncs;

宣告分解說明如下:

(*ppcmps):表明ppcmps是乙個指標;

(*ppcmps)[2]:後面緊跟[2],表明ppcmps是乙個指向『兩個元素陣列』的指標

pcmp_func表明了該陣列元素的型別,它是指向函式的指標,返回值為int,有兩個const char*型別的引數;

實際上語句pcmp_func (*ppcmps)[2] = &pcmpfuncs;

將會被編譯器解釋為:

int (*(*ppcmps)[2])(const char*, const char*) = &pcmpfuncs;

宣告分解:

(*ppcmps):表明ppcmps是乙個指標;

(*ppcmps)[2]:後面緊跟[2],表明ppcmps是乙個指向『兩個元素陣列』的指標

int (*)(const char*, const char *):表明了該陣列元素的型別,它是指向函式的指標,返回值為int,有兩個const char*型別的引數;

3. 函式指標與類

在c++語言中,使用函式指標可以指向類的乙個成員函式或變數,雖然這種用法很少能用到,至少我是沒有用過,不過了解一下還是有點必要的。

為了支援這類指標,c++有三個特殊的運演算法符:::*,.->,.*;

指向成員函式的指標必須與向其賦值的函式型別匹配,這包括:1)引數的型別和個數;2)返回值型別;3)它所屬的型別;

指向成員變數的指標必須與向其賦值的變數型別匹配,這包括:1)變數型別;2)它所屬的型別;

成員函式和變數必須被繫結到乙個物件或者指標上,然後才能得到呼叫物件的this指標,然後才能指向成員變數或函式;

類aclass的成員變數int m_ivalue,其完整型別是:int型的類aclass的成員m_ivalue;

類aclass的成員函式int add(int),其完整型別是:返回值為int型,帶乙個int型別引數的類aclass的成員add;

注意:指向類的靜態變數或靜態成員函式的指標和普通成員不同;

3.1 指向類成員變數的指標

有了上面的一些說明,看下面的例子就很容易理解了;

.* 是乙個新的操作符,表明是指向成員操作符的指標(另乙個是->*,是指標物件的呼叫方式

class aclass

int  m_ivalue;

};int _tmain(int argc, _tchar* argv)

int  m_ivalue;

};// 指向類aclass成員函式的指標的宣告方式

typedef void (aclass::*pafunc)(int);

// 宣告乙個指向aclass::add()的函式指標

pafunc paadd = &(aclass::add);

int _tmain(int argc, _tchar* argv)

static int  m_ivalue;

};int aclass::m_ivalue;

typedef void(*paadd)(int);

int _tmain(int argc, _tchar* argv)

指標函式,函式指標,指標的指標 詳解

1 指標函式是指帶指標的函式,即本質是乙個函式。函式返回型別是某一型別的指標 型別識別符號 函式名 參數列 int f x y 首先它是乙個函式,只不過這個函式的返回值是乙個位址值。函式返回值必須用同型別的指標變數來接受,也就是說,指標函式一定有函式返回值,而且,在主調函式中,函式返回值必須賦給同型...

函式指標詳解

1.指向普通函式的指標 很簡單,如下的例子可以說明基本格式和用法 int int add int a,int b int int sub int a,int b int int operator int,int int add int tmain int argc,tchar argv 上例中,in...

函式指標詳解

這篇文章把函式指標的各種常用情況做了乙個詳解的總結。1.指向普通函式的指標 很簡單,如下的例子可以說明基本格式和用法 cpp view plain copy int int add int a,int b int int sub int a,int b int int operator int,in...