函数指针

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;
}

以上是关于函数指针的主要内容,如果未能解决你的问题,请参考以下文章

函数指针和指针函数和回调函数以及函数指针数组

指针数组 数组指针 函数指针 函数指针数组 指向函数指针数组的指针

类函数指针(不涵盖:返回类函数指针)

函数指针(函数指针作为函数形参/函数类型作为函数返回类型)

函数指针和指针函数

指针数组,数组指针,函数指针,main函数实质,二重指针,函数指针作为參数,泛型函数