C语言 将函数名作为参数被另外一个函数调用

C语言 将函数名作为参数被另外一个函数调用,第1张

要将函数名作为参数,需要使用函数指针

函数指针的定义格式为

ret_type (var_name)(arg_list);

表示返回值为ret_type,参数列表为arg_list的函数指针var_name

int (p)(int,int);

表示返回值为int,参数为两个int型的函数指针p。

以函数指针作为形参,即可实现函数名作为参数,由另一个函数调用。

void func(int (a)(int))

{

    int r = 100l;

    (a)(r);

}

即可传入函数指针,并以r为参数,调用该指针指向的函数。

在c/c++中,可以使用函数指针来实现,在matlab中,使用函数句柄这时类似于函数指针的一项功能例如:

自定义一个函数如下,这个myfunm函数是将要当做参数用的

function f=myfun(x)

f=x^2;

你知道这个m文件要放在哪里才能调用是吧下面这个函数的参数就是函数:

function g=fun(f)

g=f(2)+f(3);

然后我在命令窗口输入如下,出现结果:

>> f2=@myfun;

>> fun(f2)

ans =

13

楼主已经开始想要知道如何用函数指针了,不错,好学生,给你个例子

#include <stdioh>

int ff(int(p)(int,int),int a,int b)//原始写法,阅读不便

{

return p(a,b);

}

typedef int(Pfun)(int,int);//定义函数指针类型,同时申明了原型 返回int 两个int形参

int f(Pfun p,int a,int b) //改进写法 易懂

{

return p(a,b);

}

int add(int a,int b)

{

printf("加法函数add被调用:");

return a+b;

}

int sub(int a,int b)

{

printf("减法函数sub被调用:");

return a-b;

}

void main()

{//函数指针初步应用

int a=1,b=2;

printf(" %d+%d=%d\n",a,b,f(add,a,b));

printf(" %d-%d=%d\n",a,b,f(sub,a,b));

printf(" %d+%d=%d\n",a,b,ff(add,a,b));

printf(" %d-%d=%d\n",a,b,ff(sub,a,b));

}

///////////运行结果:

加法函数add被调用: 1+2=3

减法函数sub被调用: 1-2=-1

加法函数add被调用: 1+2=3

减法函数sub被调用: 1-2=-1

1、步骤如下:

void xxx(int funaddr)

{

(void ()) bbb = (void ())funaddr;

bbb(); //就可以调用了

}

main()

{

xxx( (int)bbb); //main当中这样调用

}

2、全称为“形式参数”是在定义函数名和函数体的时候使用的参数,目的是用来接收调用该函数时传递的参数。形参的作用是实现主调函数与被调函数之间的联系,通常将函数所处理的数据,影响函数功能的因素或者函数处理的结果作为形参。没有形参的函数在形参表的位置应该写voidmain 函数也可以有形参和返回值,其形参也称为命令行参数,由 *** 作系统在启动程序时初始化,其返回值传递给 *** 作系统。

3、函数是指一段在一起的、可以做某一件事儿的程序。也叫做子程序、(OOP中)方法。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/11672719.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存