大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
在调用时,在需要函数做参数的位置直接写上要做为实参的函数名就可以了:
神农架林区ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联建站的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:18982081108(备注:SSL证书合作)期待与您的合作!
如:
//---------------------------------------------------------------------------
#include stdio.h
int fun(void)
{
return 117;
}
int aun(int (*a)(void))
{
printf("%d\n",(*a)());
}
int main(void)
{
aun(fun);
return 0;
}
//---------------------------------------------------------------------------
Question:在函数void function()中,需要将另外一个函数double input()的函数名作为参数。
typedef double (*P)(int);
Note:参数部分需要注意,函数input()所有的输入参数类型都需要包含在内。
例如 double input(double u[5], int num, double x), 则在定义时写作 typedef double (*P)(double*,int,double)。
此时,函数作为一种类型,可以直接被其他函数调用。
函数声明中定义 void function(P input),调用function(input)即可。
也可以写成
函数的参数分为形参和实参两种。
形参出现在函数定义中,在整个函数体内都可以使用,离开该函数则不能使用。实参出现在主调函数中,进入被调函数后,实参变量也不能使用。
形参和实参的功能是作数据传送,发生函数调用时,主调函数把实参的值传送给被调函数的形参从而实现主调函数向被调函数的数据传送。
举个例子:
定义一个函数s=f(a,b),功能是将a和b的差赋值给s,那么,a和b就是这个函数的两个参数。
扩展资料:
C语言的参数传递方式
方法有3种方式:值传递、地址传递、引用传递
tips:
被调用函数的形参只有函数被调用时才会临时分配存储单元,一旦调用结束占用的内存便会被释放
值传递和地址传递,传递的都是实参的一个拷贝
C语言中实参和形参之间的数据传递是单向的“值传递”,单向传递,只能由实参传给形参,反之不行
输出格式并没有选择%p而是选择了%d,因为十进制的数看起来更直观。
值传递
如果只是传递值的话:
#include stdio.h
//值传递传值
void swap( int x, int y);
int main()
{
int a=2,b=3;
printf("before:实参为a,b\na=%d,地址为%d\nb=%d,地址为%d\n\n",a,a,b,b);
swap(a,b);
printf("after:实参为a,b\na=%d,地址为%d\nb=%d,地址为%d\n\n",a,a,b,b);
return 0;
}
void swap(int x,int y)
{
int tmp;
tmp=x;
x=y;
y=tmp;
printf("inside:形参为x,y\nx=%d,地址为%d\ny=%d,地址为%d\n\n",x,x,y,y);
}
把函数名作为参数就是函数的地址了.
如下面的例子
#include
stdio.h
typedef
int
(*PFUN)(int
a,
int
b);//函数指针
int
add(int
a,
int
b)
{
return
(a+b);
}
void
fun(int
a,
int
b,
PFUN
pfun)
//函数指针作为函数的参数
{
printf(“%d\n",
pfun(a,b));
}
int
main()
{
int
a=5;
int
b=6;
PFUN
pfun=add;
//将函数指针指向add
fun(a,
b,
pfun);
return
0;
}
就是把函数的返回值作为参数来调用外层函数。比如有返回两个数的大者的函数int
max(int
a,int
b),那要求三个数的最大者就可以这么调用max(max(a,b),c);,就是先求得a、b中的大者再与c进行比较……