Chinaunix首页 | 论坛 | 博客
  • 博客访问: 155846
  • 博文数量: 36
  • 博客积分: 372
  • 博客等级: 一等列兵
  • 技术积分: 282
  • 用 户 组: 普通用户
  • 注册时间: 2012-03-28 17:04
文章分类

全部博文(36)

文章存档

2012年(36)

分类: LINUX

2012-10-17 10:38:09

  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)();
}
阅读(1866) | 评论(0) | 转发(2) |
给主人留下些什么吧!~~