扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
Question:在函数void function()中,需要将另外一个函数double input()的函数名作为参数。
创新互联建站专注为客户提供全方位的互联网综合服务,包含不限于网站设计、成都网站设计、通许网络推广、小程序开发、通许网络营销、通许企业策划、通许品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联建站为所有大学生创业者提供通许建站搭建服务,24小时服务热线:18980820575,官方网址:www.cdcxhl.com
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)即可。
也可以写成
C语言execl()函数:执行文件函数
相关函数:fork, execle, execlp, execv, execve, execvp
头文件:#include unistd.h
定义函数:int execl(const char * path, const char * arg, ...);
函数说明:execl()用来执行参数path 字符串所代表的文件路径, 接下来的参数代表执行该文件时传递过去的argv(0), argv[1], ..., 最后一个参数必须用空指针(NULL)作结束.
返回值:如果执行成功则函数不会返回, 执行失败则直接返回-1, 失败原因存于errno 中.
范例
#include unistd.h
main()
{
execl("/bin/ls", "ls", "-al", "/etc/passwd", (char *)0);
}
执行:
/*执行/bin/ls -al /etc/passwd */
-rw-r--r-- 1 root root 705 Sep 3 13 :52 /etc/passwd
#include
stdio.h
void
mat(int
x)
{
printf("Call
mat,
parameter
x=%d\n",
x);
}
int
main(int
argc,
char*
argv[])
{
char
func[512];
int
para;
while
(1)
{
scanf("%s",
func);
scanf("%d",
para);
if
(strcmp(func,
"mat")
==
0)
{
mat(para);
break;
}
else
{
printf("请输入:
mat
3\n");
}
}
}
解释:c中肯定是不能用字符串直接去调用函数的,不过你可以将一个字符串定位到一个函数指针,当判断输入的字符串和某个字符串相同之后,调用相应函数指针所指向的函数,例如:
mat
-------
void
(*fun)(int
x);
当用户输入mat时,调用fun。
当然你也可以向我上面写的,判断用户输入的是否是你想要的,如果是,直接调用mat函数。
希望对你有帮助~
要将函数名作为参数,需要使用函数指针。
函数指针的定义格式为
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为参数,调用该指针指向的函数。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流