函數指針的作用:它主要的用途是轉換表和作爲參數傳遞給另一個函數。
舉一個函數指針聲明的例子:
int (*pf) (int , int);
解釋:pf是一個指向函數的指針,此被指向函數包含兩個int型形參,返回值爲int型;
注意:聲明函數指針時必須在‘*’號與指針名稱pf之外加上'()',否則不能成功;
例程:
//////////////////////////////////////////////////////////////////////////
//函數指針 */
//////////////////////////////////////////////////////////////////////////
#include <stdio.h>
#include <stdlib.h>
//typedef bool (*PFUNC) (int, int);
bool lzwCompare(int a, int b)
{
if (a<=b)
{
return false;
}
else
return true;
}
int main(void)
{
int a=9, b=10;
int (*pf)(int, int) = lzwCompare;
if (pf(a,b))
{
printf("a>b\n");
}
else
printf("a<=b\n");
return 0;
}
爲了以後可以使定義函數指針方便,我們可以使用typedef對函數指針做類型重命名,形式如下:
typedef bool (*PFUNC) (int, int);
上面的例子改爲:
//////////////////////////////////////////////////////////////////////////
/*函數指針 */
//////////////////////////////////////////////////////////////////////////
#include <stdio.h>
#include <stdlib.h>
typedef bool (*PFUNC) (int, int);
bool lzwCompare(int a, int b)
{
if (a<=b)
{
return false;
}
else
return true;
}
int main(void)
{
int a=9, b=10;
PFUNC pf = lzwCompare;
if (pf(a,b))
{
printf("a>b\n");
}
else
printf("a<=b\n");
return 0;
}