C語言 函數指針的調用格式
(*函數指針變s)([實參表])
例如,上例中定義的指針fp已經指向了函數max(),則利用fp調用max()的形式為:
(*fp)(a,b);
其中a、b是實參,在函數調用前,已經有確定的值。
【例題】求最大值
定義一個指向函數的指針,使之指向函數max(), max()的功能為求兩個數的最大值。
程序代碼如下:
#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);
}
程序運行,屏幕提示信息:
input two numbers:
輸入兩個整數:
23 78
輸出結果為:
max=78
程序中,語句int(*fp)();為定義語句,定義fp為指向函數的指針。
max為函數名,也代表了函數在內存中的起始地址,當使用語句fp=max;使指針fp指向max()函數后,fp指針也得到了函數max()的首地址。之后,在需要調用max()函數時,直接使用fp指針即可找到max()函數在內存中的起始地址,從起始地址的第一條指令開始執(zhí)行。
這樣一來,對于調用函數,除了直接使用函數名調用外,也可以使用指向函數的指針來調用。
點擊加載更多評論>>