目录
1、定义
函数指针是存储其机器语言代码的内存的开始地址。
2、基础知识
a、获取函数的地址
函数的名字就是函数的地址;
solve( think ); // 调用solve函数可以在其内部调用 think 函数
fun( think() ); // 首先调用think()函数,think()函数的返回值作为fun函数的参数
b、 声明一个函数指针
声明指向函数的指针时,必须指定指针指向的函数类型。即声明应该指定函数的返回类型以及函数的特征值。
声明:double pam(int);
double (*pf)(int); // pf 就是函数指针,是一个指向函数的指针
注:double (*pf)(int); //(*pf)是指向函数的指针
double *pf(int); // 函数的功能是返回一个double *
c、 使用函数指针调用函数
使用指针来调用被指向的函数
double pam(int); double (*pf)(int); pf = pam ; double x = pam (1); // 使用函数名字调用 pam() double y = (*pf)(2); // 使用函数指针调用 pam() // c++ 也允许使用函数名那样使用pf: double z = pf(3);
#include <iostream>
// 函数声明
double betsy(int);
double pam(int);
void estimate(int lines, double (*pf)(int));
int main() {
int code;
std::cout << "Please input lines:";
std::cin >> code;
std::cout<< "betsy's estimate:";
estimate(code, betsy);
std::cout<< "pam's estimate:";
estimate(code, pam);
return 0;
}
double betsy(int lines) {
return 1*lines;
}
double pam(int lines) {
return 2*lines;
}
void estimate(int lines, double (*pf)(int)) {
std::cout << "lines = " << lines << std::endl;
std::cout << (*pf)(lines) << "hours \n";
}
/*
Please input lines:10
betsy's estimate:lines = 10
10hours
pam's estimate:lines = 10
20hours
*/