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 代替函式名即可 指標陣列 陣列裡面的元素都是指標 型別識別符號 指標變數名 常量表示式 區別 ...