candyliuxj

每一个函数都占用一段内存单元,它们有一个起始地址,,指向函数入口地址的指针称为函数指针。

指向函数的指针变量的一般定义形式为:

参数表);

int (*p)(int a, int b); //p是一个指向函数的指针变量,所指函数的返回值类型为整型

int *p(int a, int b); //p是函数名,此函数的返回值类型为整型指针

int max(int x, int y); int (*p)(int a, int b);

可以先后指向不同的函数,但一个函数不能赋给一个不一致的函数指针(即不能让一个函数指针指向与其类型不一致的函数)。

如有如下的函数:int fn1(int x, int y);int fn2(int x);

定义如下的函数指针:int (*p1)(int a, int b);int (*p2)(int a);

p1 = fn1; //正确

p2 = fn2; //正确

p1 = fn2; //产生编译错误

来表示函数的下一条指令。

源代码:

#include <iostream>using namespace std;#include <conio.h>int max(int x, int y); //求最大数int min(int x, int y); //求最小数int add(int x, int y); //求和void process(int i, int j, int (*p)(int a, int b)); //应用函数指针int main(){int x, y;cin>>x>>y;cout<<"Max is: ";process(x, y, max);cout<<"Min is: ";process(x, y, min);cout<<"Add is: ";process(x, y, add);getch();return 0;}int max(int x, int y){return x > y ? x : y;}int min(int x, int y){return x > y ? y : x;}int add(int x, int y){return x + y;}void process(int i, int j, int (*p)(int a, int b)){cout<<p(i, j)<<endl;}

输出结果:

没有什么可凭仗,只有他的好身体,没有地方可去,只想到处流浪。

candyliuxj

相关文章:

你感兴趣的文章:

标签云: