函数指针
Posted lnleelove
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了函数指针相关的知识,希望对你有一定的参考价值。
1、基本的函数指针
定义:函数存储空间的起始地址(入口地址)成为这个函数的指针
写法: int (*p)(int x, int y)
这里指的就是定义了一个指向函数的指针变量p
示例:int max(int,int);
int (*p)(int,int);
p=max;
int num;
num=(*p)(1,2); // 此处与num=max(1,2)的效果一致。
// max内的具体函数内容此处不写
注意:1、int (*p)(int x, int y) 不能写成 int *p(int x, int y),()的运算级别比*高
如果写成去掉括号的形式,则变成函数p(int x, int y)的返回值是 int型的指针
2、此例子中,p只能是指向函数起始地址,但是不能进行运算,不能通过运算进行执行指令的偏移
3、指针变量不意味着它可以指向任何变量,返回值类型和形参个数与形参类型要一样才可行
2、函数指针作形参
把指向函数指针的函数作为形参:每次函数调用其他函数时,可以采用一个函数,调用不同的函数
这种做法有利于结构化程序的开发
int fun( int x, int y,int (*p)(int, int) )
int max(int, int);
int min(int, int);
fun(1,2,max); // 进行指针函数的传递,传递函数的入口地址
……
int fun(int x, int y, int (*p)(int, int))
{
int result;
result=(*p)(x,y); // 在函数中使用传入的指针函数
return 0;
}
以上是关于函数指针的主要内容,如果未能解决你的问题,请参考以下文章