关于回调函数

回调函数

  回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。

     函数

     函数名就是指针,对于一个函数,会自动将其转换为指针。

    

#include <stdio.h>

void fun(){

}
int main(){
     printf("%p-%p-%p\n",fun,&fun,*fun);    
     return 0;    
}

  打印的结果是这三个值是一样的。 &fun是该函数的地址, 为指针类型, fun是一个函数, 会转换成其指针类型, 而对于*fun, 由于fun已经变成了指针类型, 指向这个函数, 所以*fun就是取这个地址的函数, 而又根据function-to-pointer, 该函数也转变成了一个指针, 所以以此类推, 这三个值的结果是相同的.

    所谓的回调函数,就是依赖于一个函数指针作为一个参数,通过别的函数来调用它指向的函数。

    

#include <iostream>
using namespace std;
int test1(int num){
          cout<<"This is teston function"<<endl;    
}
int test2(int num){
          cout<<"This is testtwo function"<<endl;
}
int FUN(int (*ptr)(int n),int n){
          int a = (*ptr)(n);
          return a;
}
int main(){
      FUN(test2,10);
      return 0;
}

  函数指针

     1)定义:

        函数返回类型   (*指针变量名)(参数列表);

     2)函数指针的复制

        在赋值时,可以将函数指针赋值给函数名,但是,必须是参数列表相同,返回值相同。

posted @ 2013-07-23 16:39  Youth-Forever  阅读(153)  评论(0)    收藏  举报