c語言函式指標的理解與使用
文章轉自 http://www.cnblogs.com/haore147/p/3647262.html
覺得寫的很不錯,轉一份留用
1.函式指標的定義
顧名思義,函式指標就是函式的指標。它是一個指標,指向一個函式。看例子:
1 2 3 |
A) char *
(*fun1)( char *
p1, char *
p2);
B) char *
*fun2( char *
p1, char *
p2);
C) char *
fun3( char *
p1, char *
p2);
|
看看上面三個表示式分別是什麼意思?
C)這很容易,fun3是函式名,p1,p2是引數,其型別為char *型,函式的返回值為char *型別。
B) 也很簡單,與C)表示式相比,唯一不同的就是函式的返回值型別為char**,是個二級指標。
A) fun1是函式名嗎?回憶一下前面講解陣列指標時的情形。我們說陣列指標這麼定義或許更清晰:
1 |
int (*)[ 10 ]
p;
|
再看看A)表示式與這裡何其相似!明白了吧。這裡fun1不是什麼函式名,而是一個指標變數,它指向一個函式。這個函式有兩個指標型別的引數,函式的返回值也是一個指標。同樣,我們把這個表示式改寫一下:
1 |
char *
(*)( char *
p1, char *
p2) fun1;
|
這樣子是不是好看一些呢?只可惜編譯器不這麼想。^_^。
2.函式指標使用的例子
上面我們定義了一個函式指標,但如何來使用它呢?先看如下例子:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
#include
<stdio.h>
#include
<string.h>
char *
fun( char *
p1, char *
p2)
{
int i
=
|