函数的指针

来源:互联网 发布:淘宝店铺导航装修 编辑:程序博客网 时间:2024/04/26 05:51

函数指针,顾名思义,它指向一个函数的入口地址,其定义及使用如下:  
  定义:returntype     (*ptr)               (typename   variable,......)  
              返回类型           指针名称         指向函数的参数表。  
  你不能这样:     returntype     *ptr             (typename   variable,......)   这样会被理解为一个函数的定义。  

你需要知道,函数名并不是函数类型的一部分,所以对于函数指针来说,函数的返回类型和参数表是很重要的。这两个东西要与函数指针完全匹配。  
  你定义了函数:int   cal(int   a,int   b)       int   get(int   a,int   b)  
  定义函数指针未初始化:int   (*ptr)(int  ,int);    
  初始化的两种方式:  
            int   (*ptr)(int ,int)=cal;  
            int   (*ptr)(int,int)=&cal;   将ptr赋值为cal函数,这两种是等价的。

 

  当然 先定义再初始化也是可以的。

   例如:

    int   (*ptr)(int ,int);

    ptr=cal;
  调用:  
            int   val1=3,val2=4;  
            ptr(val1,val2);  
            (*ptr)(val1,val2);         这两种调用方式也是完全等价的。

 

采用typedef 简化函数指针

 typedef   int   (*PFUN)(int ,int);//注意,这里不是定义函数指针,而是定义一个函数指针的类型,这个类型是自己定义的,类型名为PFUN

 

PFUN ptr ;

ptr =cal;

以后的调用就完全和上面一样


原创粉丝点击