Chinaunix首页 | 论坛 | 博客
  • 博客访问: 157664
  • 博文数量: 83
  • 博客积分: 3956
  • 博客等级: 中校
  • 技术积分: 663
  • 用 户 组: 普通用户
  • 注册时间: 2010-09-24 16:29
文章分类

全部博文(83)

文章存档

2010年(83)

我的朋友

分类: C/C++

2010-10-21 15:11:50

功能实现:返回函数指针的函数

本实例对于初学者可以比较难以理解,不过由于本内容实际项目用得很少,它一般只出现在知名公司招聘时的笔记面试中。

代码如下:



#include <stdio.h>

int get_big(int i, int j)
{
    return i > j? i: j;
}
int (*get_function(int a))(int, int)
{
    printf("the number is %d\n", a);

    return get_big;
}
int main(void)
{
    int i = 5, j = 10, max;

    int (*p)(int, int);
    p = get_function(100);

    max = p(i, j);
    printf("the max is %d\n", max);

    return 0;
}


运行结果:


the number is 100

the max is 10


程序说明:


1. 程序首先定义了一个函数get_big,用来获取两个数中的较大者。

2. int (*get_function(int a))(int, int)是一个返回函数指针的函数。这个可能比较难以理解。我们首先抓住get_function, 因为运算符()的优先级比*高,所以get_function先与()结合。get_function(int a)是含有一个整型参数的函数。这个函数的返回值比较特殊,它的返回值是int(*)(int, int), 也就是它返回的是一个指向函数的指针。该指针所指向的函数有两个整型参数。get_function中, 将get_big作为函数的返回值。get_big是一个函数,也是函数get_big的入口地址,它是一个指针。

3. 主函数中,定义了一个指向函数的指针p, p所指向的函数有两个整型参数。然后调用get_function,将返回值赋给p。函数get_function有一个整型形参,调用时以100作为实参。函数get_function返回一个指向函数的指针。调用get_function结束后,p就指向了get_big函数。之后通过P调用get_big函数,将调用的返回值赋给变量max。

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