函式指標可以像一般函式一樣,用於呼叫函式、傳遞引數。在如 c 這樣的語言中,通過提供乙個簡單的選取、執行函式的方法,函式指標可以簡化**。
函式指標只能指向具有特定特徵的函式。因而所有被同一指標運用的函式必須具有相同的引數和返回型別。
乙個簡單的例子:
#include
// 函式原型
void sayhello();
//函式實現
void sayhello()
// main函式呼叫
int main()
在上面的例子中我們定義了乙個函式sayhello(),sayhello()函式並沒有接受任何引數,只是列印了hello,world,呼叫sayhello()直接使用sayhello();形式,有沒有別的方法呢?
#include
// 函式原型
void sayhello();
//函式實現
void sayhello()
// main函式呼叫
int main()
~
void
(*syahelloptr)
(),是乙個函式指標,它指向乙個不接收引數且沒有返回值的函式。
我們來看函式指標的一般形式:
返回值 (* funcptr )(函式引數) = 函式名
帶引數的函式指標#include
//函式原型
void subtractandprint(int x, int y);
//函式實現
void subtractandprint(int x, int y)
//main函式呼叫
int main()
帶引數和返回值的函式指標#include
// 函式原型
int subtract(int
x, int
y);// 函式實現
int subtract(int
x, int
y) // main函式呼叫
int main()
函式指標作為函式引數#include
// 函式原型
int add(int x, int y);
int subtract(int x, int y);
int domath(int (*mathop)(int, int), int x, int y);
// 加法 x+ y
int add(int x, int y)
// 減法 x - y
int subtract(int x, int y)
// 根據輸入執行函式指標
int domath(int (*mathop)(int, int), int x, int y)
// main函式呼叫
int main()
我們定義了函式int domath(int (*mathop)(int, int), int x, int y)。它第乙個引數int (*mathop)(int, int)是乙個函式指標,指向返回乙個整數並接受兩個整數作為引數的函式。我們在主函式中呼叫domath第乙個引數引數add就會在domath函式中呼叫add,如果在domath中傳入subtract就會呼叫subtract函式。
typedef的用處
函式指標型別通常相當的冗長,可以用typedef 大大的簡化。
例如
typedef int (*cmpfcn)(const char *, const char *);
#include
int sum(int a,int b)
typedef int (*funptr)(int ,int);
int main()
下面時乙個在專案中的真實用例:
我們定義了函式指標mir_ioctl_fn,它返回乙個int32_t的值,並且它的引數需要plugin和param,我們在函式mir_plugin_ioctl中定義了函式指標fn,在給fn經過一些操作賦值後可以直接呼叫fn(plugin,param).
關於函式指標的例子參考另一篇部落格分析c語言宣告
C 基礎 指標,函式指標
變數指標,函式指標 include using namespace std 做函式宣告,函式的實現可以在呼叫的後面,但是宣告必須在呼叫的前面 int add int,int int mutiple int,int int dooperate int a,int b,int opimp int,int...
C語言基礎 函式指標 指標函式
參考這位大佬的文章,加上自己的理解 定義 指標函式,就是乙個返回值是指標的函式,其本質是乙個函式,而該函式的返回值是乙個指標。宣告格式為 型別識別符號 函式名 參數列 例如 int fun int x,int y 它的返回值是乙個int型別的指標 指標函式也沒什麼特別的,和普通函式對比不過就是其返回...
C 基礎之函式指標
今天看到cocos2d中選單按鈕的原始碼用到函式指標,來解析一下用法 函式指標 本質 指標,變數 定義 void p int x 這個定義不完全準確,我們的目的是知道我們用的是什麼,會用 看一下怎麼定義 void temp int x 定義乙個普通函式 我在main裡寫 temp 思考 這代表什麼意...