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号
广州京杭网络科技有限公司 版权所有