gpt4 book ai didi

c - 指向函数的指针c语言基础

转载 作者:太空宇宙 更新时间:2023-11-04 06:34:01 25 4
gpt4 key购买 nike

这是我第一次使用指向函数的指针。

我想做的是创建一个名为 essay 的函数,它获取指向另一个函数的指针、一个整数 num,然后 num 加倍。

函数论文,将参数相乘,然后返回我作为参数接收到的函数的值,以及乘积。

这听起来很复杂,但实际上非常简单。示例:

essay(sin,2,pi,1/2) will return the value of sin(pi/2)

这是我的代码...出于某种原因,它不允许我将指针发送到函数 sin。说没有重载函数 sin 的实例与参数列表匹配,但这正是我看到我的老师做的......我想。

#include <stdio.h>
#include <conio.h>
#include <stdarg.h>
#include <math.h>
double (*pfunc)(double);
double essay(double* pfunc(double),double num, ... )
{
int i;
double product=1,result;
va_list arguments;
va_start(arguments,num);
for(i=0;i<num;i++)
product*=va_arg(arguments,double);
va_end(arguments);
result=*(pfunc(product));
return result;
}
void main()
{
double x,y;
x=3.14159265358979323846;
y=0.5;
printf("%lf",essay(sin,2,x,y));
getch();
}

最佳答案

这是错误的

double essay(double* pfunc(double),double num, ... )

这里你将一个函数作为参数传递,它返回一个指向 double 的指针,这没有意义,应该是:

 double essay(double (*pfunc)(double),double num, ... )

在这里,您将一个指针传递给一个函数,该函数返回一个 double 值并接收一个 double 值作为参数

关于c - 指向函数的指针c语言基础,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17074637/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com