一,函数的指针(指向函数的指针)
用法:1:先声明和定义一个指向函数类型的指针 形式:函数类型 (*指针名)(该函数的参数(可以不加函数的参数名));
2:给声明的函数指针赋值即指针=函数名; 如P=fun1;
3:调用和函数的调用一样;
说明:当有两个函数类型和有,参数类型以及参数的个数都一样时,不用纠结,赋值和区分调用的具体是哪个函数。
#include <iostream>
using namespace std;
double fun1(double, double);//函数 f(x)=2*x;
double fun2(double, double);// 函数 f(x)=x*x*x:
/*用矩形法求定积分*/
/* f(x)=2*x */
double fun1(double d_xx, double d_sx) {
double i_n = 0;
i_n = (d_sx - d_xx) / 10000; //区间宽度
int i_i; // 计数
double f_x;
double sum = 0; //求和
for (i_i = 0; i_i < 10000; i_i++) {
f_x = 2 * (d_xx + i_i*i_n);
sum += f_x *i_n;
}
return sum;
}
/*f(x)=x^3*/
double fun2(double d_xx, double d_sx) {
double i_n = 0;
i_n = (d_sx - d_xx) / 10000; //区间宽度
int i_i; // 计数
double f_x;
double sum = 0; //求和
for (i_i = 0; i_i < 10000; i_i++) {
f_x = (d_xx + i_i*i_n)*(d_xx + i_i*i_n)*(d_xx + i_i*i_n);
sum += f_x*i_n;
}
return sum;
}
int main() {
double(*p)(double, double); //声明一个函数指针
p = fun1; //赋值
cout << p(0, 2);
cout << ("世界 你好");
p = fun2;
cout << p(0, 2);
return 0;
}
二 指向 函数的指针作为参数
1: 在函数的参数列表中加入函数指针的声明(声明和一般声明一样)。
2:在该函数中给函数指针的形参赋值(要调用的函数名)。
3:其他的和一般函数的使用一样。
注意:不能使用无效的指向函数的指针作为实参。
#include <iostream>
using namespace std;
double fun1(double, double);//函数声明
double intergral(double a, double b, double(*fun0)(double d_xx, double d_sx)) {
fun0 = fun1;
return fun0(a, b);
}
double fun1(double d_xx, double d_sx) {
double i_n = 0;
i_n = (d_sx - d_xx) / 10000;
int i_i;//计数
double sum = 0;
for (i_i = 0; i_i<10000; i_i++)
sum += 2 * (d_xx + i_i*i_n)*i_n;
return sum;
}
int main() {
double(*p)(double, double);
p = fun1;
cout << p(0, 2);
cout << ("世界 你好");
cout << intergral(0, 2, p);
return 0;
}