andylei

常用链接

统计

最新评论

函数指针的应用

  1. 函数指针的定义:
    void (*funcPtr)(); 
    这个表达式定义一个指向没有参数,没有返回值的函数。函数指针变量名是funcPtr. 分析一个较复杂的函数指针定义表达式时,可按下列步骤进行:
    • 先找到变量名
    • 找变量名右边的项,然后找左边的项,然后右边,...这种右-左-右的方法适用于大多数的表达式。
  2. void (*funcPtr)();的分析
    • 变量名是funcPtr,
    • 找右边,右边没有项了,只是一个右括号:")"
    • 找左边,变量左边是*表示funcPtr是一个指针
    • 找右边, 是(),表示一个空参数列表
    • 找左边,*的左边是void, 表示函数的返回类型。
    • 结果:
      funcPtr是一个指向函数的指针,该函数无参数,返回类型是void.
  3. void * (*(*fp1)(int))[10];的分析:
    • fp1
    • 右: )
    • 左: *, fp1是一个指针
    • 右:(int), fp1指向的函数的参数是int
    • 左:*,fp1指向的函数的返回值是一个指针
    • 右[10],fp1指向的函数的返回值是一个指针数组
    • 左void *,指针数组指向的是void类型。
  4. float (*(*fp2)(int,int,float))(int);
    •  fp2指向一个带有三个参数的函数,这个函数f返回一个指针,该指针又指向一个函数,这个函数有一个int参数,返回类型是float.
  5. 使用函数指针
    • 定义函数指针
    • 定义函数
    • 将函数地址赋给函数指针
    • 通过函数指针调用函数
#include <iostream>
using namespace std;

void func(){
     cout
<<"func() called" << endl; 
}

int main(){
     
void (*fp)();  // define a function pointer
     fp = func;     // Initialize it
     (*fp)();       // Dereferencing calls the function
     void (*fp2)() = func; // define and initialize
     (*fp2)();
}


posted on 2010-02-04 17:02 逆水行舟 阅读(418) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理