回调函数的声明及使用(序)

来源:互联网 发布:python inceptor 编辑:程序博客网 时间:2024/05/17 17:38
#include <stdio.h>
void MyFun(int x); /* 这个声明也可写成:void MyFun( int )*/
void (*FunP)( ); /*也可声明成void(*FunP)(int x),但习惯上一般不这样。 */                                                                                      
void myfun(int,int);
int main(int argc, char* argv[])
{
        MyFun(10); /* 这是直接调用MyFun函数 */
        FunP = &MyFun; /* 将MyFun函数的地址赋给FunP变量 */
        //(*FunP)(20); /* (★)这是通过函数指针变量FunP来调用MyFun函数的。 */
        FunP(20); /* (★)这是通过函数指针变量FunP来调用MyFun函数的。 */
        FunP = *myfun;
        (*FunP)(78,19);
}

void MyFun(int x) /* 这里定义一个MyFun函数 */
{
        printf("%d\n",x);
}

void myfun(int x,int y)
{
        printf("hahaha%d,%d\n",x,y);
}


在上面的例子中函数指针的声明可以写成

void (*FunP)(); 这种声明没有标明参数,是通用的模式,调用是可以是一个参数,也可以是多个参数

例如:

               FunP(20)

               FunP(78,19);

也可写成void (*FunP)(int ) 这种声明标明1个参数,调用是必须是一个参数,

例如:

             FunP(20)

也可以写成void (*FunP)(int,int)这种声明标明2个参数,调用是必须是一个参数,

例如:

              FunP(78,19);


对函数指针的调用两种方法

1,FunP(78,19);

2,(*FunP)(78,19);

注意:当函数指针做参数时,形参的声明方法和函数指针的声明方法相同;


相关文章:http://c.biancheng.net/cpp/html/496.html

0 0
原创粉丝点击