在调用时,在需要函数做参数的位置直接写上要做为实参的函数名就可以了:
成都创新互联是一家集网站建设,滨海企业网站建设,滨海品牌网站建设,网站定制,滨海网站建设报价,网络营销,网络优化,滨海网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
如:
//---------------------------------------------------------------------------
#include stdio.h
int fun(void)
{
return 117;
}
int aun(int (*a)(void))
{
printf("%d\n",(*a)());
}
int main(void)
{
aun(fun);
return 0;
}
//---------------------------------------------------------------------------
主函数的实参是由操作系统传递的。
c++规定的主函数标准格式(c语言未具体规定):int
main(int
argc,
char
*argv[])
其中int
argc
表示操作系统传递给程序的参数个数,char
*argv[]
存储各个参数。
例如:
若有程序如下:
int
main(int
argc,
char
*argv[])
{
int
i;
printf("您输入了
%d
个参数\n分别是:",argc);
for(i=0;i
运行-
cmd
-
输入
c:\app.exe
hello
world!
回车
执行结果将是:
您输入了
3
个参数
分别是:c:\app.exe
hello
world!
"
注意,第一个参数值将是你程序的文件名。
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)即可。
也可以写成
我以前答过的一个题的例子拿给你看看。
函数名:errorSetHandler
参数:function是个函数类型的变量,void (*)(int, char_t *),这个函数类型有两个参数,一个整型,一个char_t *的指针型,返回是个void *指针。
返回:是个函数类型,void (*)(int , char_t *),类型说明跟上面一样。
void (*errorSetHandler(void (*function)(int etype, char_t *msg)))(int etype, char_t *msg)
{
void (*oldHandler)(int etype, char_t *buf); //定义一个函数void (*)(int , char_t *)类型的函数变量oldHandler
oldHandler = errorHandler; //把errorHandler赋给oldHandler,errorHandler应该也是个函数变量
errorHandler = function; //把参数function赋给errorHandler
return oldHandler; //返回函数变量oldHandler的值
}
补充一下:
通过typedef可以简化这个函数的形式:
typedef void (*ErrHdlr)(int, char_t *);
然后这个函数可以简化成:
ErrHdlr errorSetHandler(ErrHdlr function)
{
ErrHdlr oldHandler;
oldHandler = errorHandler;
errorHandler = function;
return oldHandler;
}
这样是不是就很直观了