C語言 函數(shù)指針的調(diào)用格式
(*函數(shù)指針變s)([實參表])
例如,上例中定義的指針fp已經(jīng)指向了函數(shù)max(),則利用fp調(diào)用max()的形式為:
(*fp)(a,b);
其中a、b是實參,在函數(shù)調(diào)用前,已經(jīng)有確定的值。
【例題】求最大值
定義一個指向函數(shù)的指針,使之指向函數(shù)max(), max()的功能為求兩個數(shù)的最大值。
程序代碼如下:
#include <stdio.h>
int max(int a,int b);
main()
{
int nl,n2,maxl;
int (*fp)();
fp=max;
printf("input two numbers:\n");
scanf("%d%d", &nl, &n2);
maxl=(*fp)(nl,n2);
printf("max=%d\n", max1);
}
int max(int a,int b)
{
return(a>b?a:b);
}
程序運(yùn)行,屏幕提示信息:
input two numbers:
輸入兩個整數(shù):
23 78
輸出結(jié)果為:
max=78
程序中,語句int(*fp)();為定義語句,定義fp為指向函數(shù)的指針。
max為函數(shù)名,也代表了函數(shù)在內(nèi)存中的起始地址,當(dāng)使用語句fp=max;使指針fp指向max()函數(shù)后,fp指針也得到了函數(shù)max()的首地址。之后,在需要調(diào)用max()函數(shù)時,直接使用fp指針即可找到max()函數(shù)在內(nèi)存中的起始地址,從起始地址的第一條指令開始執(zhí)行。
這樣一來,對于調(diào)用函數(shù),除了直接使用函數(shù)名調(diào)用外,也可以使用指向函數(shù)的指針來調(diào)用。
點(diǎn)擊加載更多評論>>