void  CALLBACK MyFunc(int i, int ii)
{
int nLen = 0;
return ;
}typedef void (CALLBACK *MYFUNC)(int, int); MYFUNC tt; tt = MyFunc; (*tt)(1,2); tt(1,2);问以下几个问题:
1 MyFunc这个函数名是不是指向函数代码的指针?还是本身就是函数代码的地址?
2 tt = MyFunc;后,为什么两者不同;
3 为什么tt和*tt相同?
谢谢了。

解决方案 »

  1.   

    typedef void (CALLBACK *MYFUNC)(int, int);//把MYFUNC定义成回调函数指针类型,返回类型为void, 参数列表:int,int MYFUNC tt;//定义一个回调函数指针 tt = MyFunc;//初始化为指向MyFunc, MyFunc为指向函数MyFunc(int, int)的指针 (*tt)(1,2);//函数体调用 tt(1,2);//函数指针调用
      

  2.   

    tt = MyFunc实际上这样子vc做了一些内部的处理,并不是简单的赋值
    就是=的重载
      

  3.   

    1 MyFunc这个函数名是不是指向函数代码的指针?还是本身就是函数代码的地址?
    答:本身就是函数的起始地址
    2 tt = MyFunc;后,为什么两者不同
    答:tt是个指针,去指向MyFunc
    3 为什么tt和*tt相同?
    答:不是相同,tt是指针,是MyFunc的起始地址,*tt是指针指向的内容,也就是MyFunc函数。
      

  4.   

    调试时发现tt和*tt相同的,为什么呢?