函数的指针

来源:互联网 发布:c语言地址符号 编辑:程序博客网 时间:2024/04/29 22:09

一,函数的指针(指向函数的指针)

       用法: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;
}

    

    




0 0
原创粉丝点击