double (*funcPtr)(double, double);
double result;
funcPtr = pow; // 使得funcPtr指向函数pow()
// 因此,表达式*funcPtr获得函数pow()
result = (*funcPtr)( 1.5, 2.0 ); // 通过funcPtr调用函数
result = funcPtr( 1.5, 2.0 ); // 与上等效的函数调用
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
double Add( double x, double y ) { return x + y; }
double Sub( double x, double y ) { return x - y; }
double Mul( double x, double y ) { return x * y; }
double Div( double x, double y ) { return x / y; }
// 具有5个函数指针的数组,这些函数需要两个double类型参数,返回值为double类型
double (*funcTable[5])(double, double)
= { Add, Sub, Mul, Div, pow }; // 初始化器列表
// 一个字符串指针数组,用于输出:
char *msgTable[5] = {"Sum", "Difference", "Product", "Quotient", "Power"};
int main()
{
int i; // 索引变量
double x = 0, y = 0;
printf( "Enter two operands for some arithmetic:\n" );
if ( scanf( "%lf %lf", &x, &y ) != 2 )
printf( "Invalid input.\n" );
for ( i = 0; i < 5; ++i )
printf( "%10s: %6.2f\n", msgTable[i], funcTable[i](x, y) );
return 0;
}
typedef double func_t( double, double ); // 函数类型名称定义为func_t
func_t *funcTable[5] = { Add, Sub, Mul, Div, pow };
版权说明:Copyright © 广州松河信息科技有限公司 2005-2025 版权所有 粤ICP备16019765号
广州松河信息科技有限公司 版权所有