指向函數(shù)的指針變量主要用于作函數(shù)參數(shù),以實(shí)現(xiàn)“函數(shù)”作函數(shù)的參數(shù),便于編制通 用程序。此時(shí)形參用指向函數(shù)的指針變量,而實(shí)參是實(shí)際函數(shù)的入口地址(函數(shù)名),當(dāng)然 實(shí)參也可以是指向?qū)嶋H函數(shù)的指針變量。
例編制程序,調(diào)用一個(gè)多功能函數(shù),對(duì)于值函數(shù)參數(shù),求兩個(gè)數(shù)的 值;對(duì)于最小值函數(shù)參數(shù),求兩個(gè)數(shù)的最小值。
程序如下:
/*指向函數(shù)的指針變量作函數(shù)參數(shù)*/
main()
{int max(),min(),fun();
int a,b;
scanf(”%d,%d”,&a,&b);
printf(”值=”);
fun(a,b,max);
printf(”最小值=”);
fun(a,b,min);
}
max(x,y)/*值函數(shù)*/
int X,Y;
{if(x>y)return(x);
else return(y);
}
min(x,y∥*最小值函數(shù)*/
int X,Y;
{if(x else return(y);
}
{un(x,Y,p)/*多功能函數(shù)*/
int X,Y;
int(*p)();/*P參數(shù)為指向整型函數(shù)的指針變量*/
{int result;
result=(*p)(x,y);/*通過指針調(diào)用函數(shù)*/
print{(”%d\n”,result)}
}
輸入數(shù)據(jù):28,32
運(yùn)行結(jié)果:值一32最小值一28
第一次調(diào)用fun()函數(shù)時(shí),除了將a、b的值傳遞給X、Y,還將函數(shù)max()的入口地址(max)傳遞給指向函數(shù)的指針變量P,這時(shí)函數(shù)fun()中的(*p)(x,y)相當(dāng)于max(x,y)。
第二次調(diào)用fun()函數(shù)時(shí),a、b的值同樣傳遞給x、Y,另改用函數(shù)rain()的入口地址(min)傳遞給指向函數(shù)的指針變量P,這時(shí)函數(shù)fun()中的(*p)(x,y)相當(dāng)于min(x,y)。
本例這樣做無太多實(shí)際意義,主要使讀者認(rèn)識(shí)指向函數(shù)的指針變量作函數(shù)參數(shù)的做法。請(qǐng)讀者進(jìn)一步參閱本章最后一節(jié)的通用積分程序。
例編制程序,調(diào)用一個(gè)多功能函數(shù),對(duì)于值函數(shù)參數(shù),求兩個(gè)數(shù)的 值;對(duì)于最小值函數(shù)參數(shù),求兩個(gè)數(shù)的最小值。
程序如下:
/*指向函數(shù)的指針變量作函數(shù)參數(shù)*/
main()
{int max(),min(),fun();
int a,b;
scanf(”%d,%d”,&a,&b);
printf(”值=”);
fun(a,b,max);
printf(”最小值=”);
fun(a,b,min);
}
max(x,y)/*值函數(shù)*/
int X,Y;
{if(x>y)return(x);
else return(y);
}
min(x,y∥*最小值函數(shù)*/
int X,Y;
{if(x
}
{un(x,Y,p)/*多功能函數(shù)*/
int X,Y;
int(*p)();/*P參數(shù)為指向整型函數(shù)的指針變量*/
{int result;
result=(*p)(x,y);/*通過指針調(diào)用函數(shù)*/
print{(”%d\n”,result)}
}
輸入數(shù)據(jù):28,32
運(yùn)行結(jié)果:值一32最小值一28
第一次調(diào)用fun()函數(shù)時(shí),除了將a、b的值傳遞給X、Y,還將函數(shù)max()的入口地址(max)傳遞給指向函數(shù)的指針變量P,這時(shí)函數(shù)fun()中的(*p)(x,y)相當(dāng)于max(x,y)。
第二次調(diào)用fun()函數(shù)時(shí),a、b的值同樣傳遞給x、Y,另改用函數(shù)rain()的入口地址(min)傳遞給指向函數(shù)的指針變量P,這時(shí)函數(shù)fun()中的(*p)(x,y)相當(dāng)于min(x,y)。
本例這樣做無太多實(shí)際意義,主要使讀者認(rèn)識(shí)指向函數(shù)的指針變量作函數(shù)參數(shù)的做法。請(qǐng)讀者進(jìn)一步參閱本章最后一節(jié)的通用積分程序。