码迷,mamicode.com
首页 > 其他好文 > 详细

函数指针用法

时间:2015-04-15 13:32:14      阅读:117      评论:0      收藏:0      [点我收藏+]

标签:c   函数指针   

函数指针实际上是个指针,只不过这个指针指向一个函数,在调用函数的时候,只要使用指向这个函数的指针就可以了。函数指针声明语法如下:

T (*the_name)([parameter_list]);

the_name便是函数指针的名字,它指向一个函数,返回类型为T,参数列表parameter_list可选,参数列表中只需列出参数类型即可,参数名字可有可无。如下例子:

int (*p_add)(int, int);

p_add这个函数指针指向一个函数,返回类型为int,参数列表是两个int类型的参数。假设有如下函数:

int add(int num1, int num2)

{

     return num1 + num2;

}

那么,p_add函数指针可以指向add()函数,两者的返回值类型、参数列表必须相同,赋值形式有两种,如下:

p_add = add; // 不使用&

p_add = &add; // 使用&

p_add函数指针使用方法也有两种形式,如下:

int result = p_add(1, 2); // 用法同函数

int result = (*p_add)(1, 2); // 这种用法更像指针

我们还可以用typedef来定义函数指针,如下:

typedef T (*the_name)([parameter_list]);

定义好了之后,就可以直接使用了:

typedef int(*p_func)(int, int);

p_func p_add = add;

p_func p_add = &add;

下面是一个具体的例子:

#include <stdio.h>

int add(int, int);
int minus(int, int);
int multiply(int ,int);
int devide(int , int);

int main(void)
{
    int (*p_add)(int, int);
    int (*p_minus)(int, int);
    p_add = add;
    p_minus = ?
    printf("add:%d\n", p_add(1, 2));
    printf("add:%d\n", (*p_add)(1, 2));
    printf("minus:%d\n", p_minus(3, 4));
    printf("minus:%d\n", (*p_minus)(3, 4));

    typedef int (*p_func)(int, int);
    p_func p_multiply = multiply;
    p_func p_devide = &devide;
    printf("multiply:%d\n", p_multiply(5, 6));
    printf("multiply:%d\n", (*p_multiply)(5, 6));
    printf("devide:%d\n", p_devide(7, 8));
    printf("devide:%d\n", (*p_devide)(7, 8));

    return 0;
}

int add(int num1, int num2)
{
   return num1 + num2;
}

int minus(int num1, int num2)
{
    return num1 - num2;
}

int multiply(int num1, int num2)
{
    return num1 * num2;
}

int devide(int num1, int num2)
{
    return num1 / num2;
}


函数指针用法

标签:c   函数指针   

原文地址:http://blog.csdn.net/ieearth/article/details/45057675

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!