我想知道为什么在梯形规则函数的参数列表中使用double (*fptr)()
?
我知道它意味着双重的文件指针。但为什么我要把空括号括起来?
答案 0 :(得分:4)
您可能需要尝试http://cdecl.org/来解决此问题:
C乱码↔英文
double (*fptr)()
将fptr声明为函数返回double的指针
答案 1 :(得分:3)
这并不意味着文件指针为double,f代表 function 。
一旦你看到如何定义函数,这就变得很明显了:
double myfunc()
如果我现在想要一个指向不带参数的函数的指针并返回一个double,那么它将是
类型double (*)()
这是您参数的类型。添加名称(fptr
)会产生以下结果:
double (*fptr)()
是一个名为fptr
的参数(函数指针的缩写),它是一个指向不带参数且返回double的函数的指针。
答案 2 :(得分:1)
它不是文件指针,声明double (*fptr)()
表示fptr
是指向函数的指针,返回double
并且不带参数,(空括号表示指向函数的指针)
一个例子:假设你有一个像:
这样的函数double fun(){
double d = 0.9;
return d;
}
然后您可以将fun
的地址分配给fptr
,如:
fptr = fun;
您可以使用fun()
拨打fptr
,如:
d = fptr()
d
是一些双变量
修改强>
我觉得你需要知道Pointers To Functions,一般来说,我们定义了函数指针,如:
returntype function (argtype1, argtype2, argtype3)
指向此类函数的相应指针是
returntype (*ptr) (atgtype1, atgtype2, atgtype3);
注意这里没有空括号,但我使用的是参数类型,其中fptr
指向一个函数,就像我在示例中给出的不接受参数的函数。