首页 > 编程笔记 > C++笔记 阅读:3

C++中的函数指针(指向函数的指针)

C++ 程序中,指针变量也可以指向函数。

函数在编译时会被分配给一个入口地址,使用指针变量指向该函数,后续即可通过指针调用此函数。

例如:
int sum(int x, int y) // 定义函数 sum(),有两个参数和一个返回值
int *a(int, int); // 定义函数指针 a,同样有两个参数和一个返回值
a = sum; // a 指向函数 sum()

使用函数指针的形式如下:
int c, d; // 定义两个整型变量
(*a)(c, d); // 调用指针 a 指向的 sum() 函数,c、d 为函数实参

【实例】计算平均值。先来看下如何通过普通函数求解平均值。定义 avg() 函数并在主函数中调用它。程序代码如下:
#include <iostream>
#include <iomanip>
using namespace std;

int avg(int a, int b);
int main()
{
    int iWidth, iLength, iResult;
    int i = 10;
    int j = 30;
    iResult = avg(i, j); // 调用 avg() 函数
    cout << iResult << endl;
}

int avg(int a, int b) // 定义 avg() 函数,计算平均值
{
    return (a + b) / 2;
}
运行结果为:

20


下面使用指针函数求解平均值。avg() 函数有两个参数和一个返回值,指针函数同样要有两个整型参数和一个整型返回值。程序代码如下:
#include <iostream>
#include <iomanip>
using namespace std;

int avg(int a, int b);
int main()
{
    int iWidth, iLength, iResult;
    iWidth = 10;
    iLength = 30;
    int (*pFun)(int, int); // 定义函数指针 pFun
    pFun = avg; // pFun 指向函数 avg()
    iResult = (*pFun)(iWidth, iLength); // 调用 pFun 指向的函数,传入两个实参
    cout << iResult << endl;
}

int avg(int a, int b) // 定义 avg() 函数,计算平均值
{
    return (a + b) / 2;
}
运行结果为:

20

pFun 是指向 avg() 函数的指针,调用 pFun 函数指针,就和调用 avg() 函数一样。

相关文章