您的位置:首页 > 其它

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

2015-05-27 09:43 225 查看
函数指针与函数指针数组的定义与使用

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

定义方法为

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
plaincopy

例子:

#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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐