函式指標 指標函式

2021-06-05 11:26:48 字數 1511 閱讀 6763

a),char * (*fun1)(char * p1,char * p2);

b),char * *fun2(char * p1,char * p2);

c),char * fun3(char * p1,char * p2);

後兩個都不難理解,那麼第乙個是什麼呢?

這裡fun1 不是什麼函式名,而是乙個指標變數,它指向乙個函式。這個函式有兩個指標型別的引數,函式的返回值也是乙個指標。

函式指標使用的例子

上面我們定義了乙個函式指標,但如何來使用它呢?先看如下例子:

#include

#include

char * fun(char * p1,char * p2)

else }

int main()

這裡需要注意到是,在visual c++6.0 裡,給函式指標賦值時,可以用&fun 或直接用函式名fun。這是因為函式名被編譯之後其實就是乙個位址,所以這裡兩種用法沒有本質的差別。

~~函式指標陣列

現在我們清楚表示式「char * (*pf)(char * p)」定義的是乙個函式指標pf。既然pf 是乙個指標,那就可以儲存在乙個陣列裡。把上式修改一下:char * (*pf[3])(char * p);

char * fun1(char * p);

char * fun2(char * p);

char * fun3(char * p);

int main()

~~~函式指標陣列的指標

char * (*a[3])(char * p);

char * (*(*pf)[3])(char * p);

pf = &a;

這裡的關係就相當於定義乙個陣列,再定義乙個指向陣列的指標。當然是這樣了

char * fun1(char * p);

char * fun2(char * p);

char * fun3(char * p);

int main()

注; 指標函式:

型別識別符號    *函式名(參數列)

int *f(x,y);其中x,y是形式引數,f是函式名,呼叫後返回乙個指向整型資料的位址指標。f(x,y)是函式,其值是指標。

如:char *ch();表示的就是乙個返回字元型指標的函式

函式指標定義

函式型別 (*指標變數名)(形參列表);

「函式型別」說明函式的返回型別,由於「()」的優先順序高於「*」,所以指標變數名外的括號必不可少,後面的「形參列表」表示指標變數指向的函式所帶的引數列表。

例如:int (*f)(int x);

double (*ptr)(double x);

在定義函式指標時請注意: 

函式指標和它指向的函式的引數個數和型別都應該是—致的;

函式指標的型別和函式的返回值型別也必須是一致的。

總結:

函式指標是乙個指向函式的指標,而指標函式只是說明他是乙個返回值為指標的函式,

函式指標可以用來指向乙個函式。

函式指標 指標函式

函式指標和指標函式,很多同學分不清楚,其實我們沒有必要刻意去區分他們的概念,可以自己寫乙個例子,就很容易明白他們各自的用途了!include include include int test int m,int n,int pfunc int a,int b int add int,int int ...

函式指標 指標函式

如果在函式中定義了乙個函式,在編譯時,編譯系統為函式 分配一段儲存空間,這段儲存空間的起始位址 又稱入口位址 稱為這個函式的指標。定義一般函式指標的形式 型別名 指標變數名 函式引數列表 例子 int p int,int p是乙個指向函式的指標變數。p的型別為 int int,int 表示。指標函式...

指標函式 函式指標

型別名 函式名 參數列 函式的返回值為指標 對指向函式的指標變數賦值,該指標變數指向了這個函式 int p 形參表 p 函式名 函式的呼叫 1.2.通過函式的指標呼叫 呼叫函式的形式 p 實參表 即用 p 代替函式名即可 指標陣列 陣列裡面的元素都是指標 型別識別符號 指標變數名 常量表示式 區別 ...