您的位置:首页 > 其它

函数指针与函数指针数组的定义与使用

2017-03-29 18:13 239 查看
转自http://blog.csdn.net/chenglibin1988/article/details/8916534

函数指针与函数指针数组的定义与使用

函数指针:指向函数的指针

定义方法为

double add(double a,double b);

double sub(double a,double b);

double mul(double a,double b);

double div1(double a,double b);

double (*Func)(double,double);

参数个数,类型,返回值与所指向的函数一致,亦即这是定义了一个统配的类型。

带函数指针的函数的定义方法:

void printf(Func *f)

{

int a = 2;

int b = 3;

printf("%f",f(a,b))

}

调用方法:

printf(add);直接调用求和函数。

printf(sub);直接调用相减函数。

这种使用有些类似与面向对象的多态:多态也是将参数作为一种统配的类型,即为父类,实际传的是子类。

函数指针数组就是函数指针的数组:使用方法类似与普通的数组。只不过注意一下定义和使用方法。

定义方法如下:

double add(double a,double b);

double sub(double a,double b);

double mul(double a,double b);

double div1(double a,double b);

下面是定义方法一

double (*oper_func[])(double, double) = {

    add,sub,mul,div1

};

定义方法二,使用typedef定义。

typedef double (*oper_func[])(double, double);

这样定义之后在其它函数里面可以直接使用 oper_func类型:

使用方法如下:

oper_func p= {add,sub,mul,div1};

[html]
view plain
copy
print?

例子:  
  
  
#import <Foundation/Foundation.h>  
  
  
  
double (*oper_func[])(double, double) = {  
  
    add,sub,mul,div1  
};  
  
int main(int argc, const char * argv[])  
{  
  
    int oper = 0;  
    int op1 = 5;  
    int op2 = 8;  
    int result = oper_func[oper](op1,op2);  
    printf("%d",result);  
    return 0;  
}  
  
double add(double a,double b)  
{  
    return a + b;  
}  
  
double sub(double a,double b)  
{  
    return a - b;  
}  
  
double mul(double a,double b)  
{  
  
    return a * b;  
}  
  
double div1(double a,double b)  
{  
    return a/b;  
}  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐