Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1699646
  • 博文数量: 607
  • 博客积分: 10031
  • 博客等级: 上将
  • 技术积分: 6633
  • 用 户 组: 普通用户
  • 注册时间: 2006-03-30 17:41
文章分类

全部博文(607)

文章存档

2011年(2)

2010年(15)

2009年(58)

2008年(172)

2007年(211)

2006年(149)

我的朋友

分类: C/C++

2007-03-02 16:48:52

“在C语言中,函数本身不是变量,但可以定义指向函数的指针,这种指针可以被赋值、存放于数组之中,传递给函数及作为函数的返回值等” --《The C Programming Language Second Edition》

下面给出几个简单的例子来说明指向函数的指针。

第一个例子说明指向函数的指针如何声明、赋值、调用

#include
#define TESTDATE 100

int func(int a)
{
    return printf("%d\n",a);
}

typedef int (*FuncPtrType)(int a);//函数指针类型的声明

int main()
{

    FuncPtrType fp = 0;   //函数指针(变量)的声明以及初始化.等同 int (*fp)(int a) = 0;
    fp = func;            //函数指针的赋值
    (*fp)(TESTDATE);      //函数指针的调用
    return 0;
}


第2个例子显示如何将指向函数的指针传递给函数作为函数的返回类型
#include
#define MAX 100

int func(int a)
{
    return printf("%d\n",a);
}

typedef int (*FuncPtrType)(int a);//函数指针类型的声明

int* call(FuncPtrType fp = 0)//函数指针(形参)的的声明
{
    return fp;             //函数指针的返回
}

int main()
{
    FuncPtrType vfp, vfp2;
    vfp = hello;
    vfp2 = call(vfp);

    return 0;
}


阅读(625) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~