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

全部博文(83)

文章存档

2010年(83)

我的朋友

分类: C/C++

2010-10-21 14:35:19

1. 指针函数

    函数可以返回整型值、字符型值、实型值,也可以返回指针,即地址。返回地址的函数的一般定义形式:

    类型名 *f(int i, int j);

    调用该函数后,返回一个指向整型变量的指针。()的优先级要高于*,因此f先与()结合,这表示f是一个函数。函数名前有一个*,表示此函数的返回值类型为指针,下面实例演示了返回指针的函数功能实现。

    程序代码如下:

#include <stdio.h>

char *name[7] = {
    "Monday",
    "Tuesday",
    "Wednesday",
    "Thursday",
    "Friday",
    "Saturday",
    "Sunday"
};

char *message = "wrong input";

char *week(int day)
{
    if (day < 0 || day > 7 || day == 0)
        return message;
    else
        return name[day - 1];
}
int main(void)
{
    int day;
    char *p;

    printf("input a number of a week:\n");
    scanf("%d", &day);

    p = week(day);
    printf("%s\n", p);
    return 0;
}


2. 函数指针

    指向函数的指针是一个指针变量,这个指针比较特殊,它指向一个函数。一个函数的函数名是一个指针,它指向函数的代码。函数的调用可以通过函数来调用也可以通过指向函数的指针来调用。
    後向函数的指针其定义的一般形式为:
    类型名(*指针变量名) ();
    例如: int(*p)(int i, int j);
    p是一个指针,它指向的一个函数, 这个函数有两个整型参数,返回类型为int。我们注意到p首先和*结合,表明p是一个指针。然后再与()结合,表明它指向的是一个函数。指向函数的指针也称为函数指针,下面实例实现了指向函数的指针的功能。

程序代码1 如下:



#include <stdio.h>

#define GET_MAX 0
#define GET_MIN 1

int get_max(int i, int j)
{
    return i > j ? i : j;
}
int get_min(int i, int j)
{
    return i > j ? j : i;
}
int compare(int i, int j, int flag)
{
    int ret;
    int (*p)(int, int);

    if (flag == GET_MAX)
        p = get_max;
    else
        p = get_min;
    ret = p(i, j);
    return ret;
}
int main(void)
{
    int i = 5, j = 10, ret;

    ret = compare(i, j, GET_MAX);
    printf("The MAX is %d \n", ret);

    return 0;
}


程序代码2 如下:


#include <stdio.h>
int get_big(int i, int j)
{
    return i > j ? i : j;
}

int get_max(int i, int j, int k, int (*p)(int, int))
{
    int ret;

    ret = p(i, j);
    ret = p(ret, k);

    return ret;
}
int main(void)
{
    int i = 5, j = 10, k = 15, ret;

    ret = get_max(i, j, k, get_big);
    printf("The max is %d\n", ret);

    return 0;
}


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