我想知道为什么double (*fptr)()
在梯形规则函数的参数列表中使用?
我知道这意味着双精度的文件指针。但为什么我需要空括号?
对于这样的问题,您可能想尝试http://cdecl.org/ :
C 胡言乱语 ↔ 英语
double (*fptr)()
将 fptr 声明为指向返回 double 的函数的指针
这并不意味着文件指针指向 double, f 代表function。
一旦您查看函数的定义方式,这一点就会变得显而易见:
double myfunc()
如果我现在想要一个指向不带参数并返回双精度的函数的指针,它将是类型
double (*)()
这是您的参数的类型。向其添加名称 ( fptr
) 会导致以下结果:
double (*fptr)()
是一个名为fptr
(函数指针的缩写)的参数,它是一个指向不带参数并返回双精度的函数的指针。
它不是文件指针,声明的double (*fptr)()
意思fptr
是指向函数的指针,它返回 adouble
并且不带参数,(空括号表示指向函数的指针)
一个例子:假设你有一个像这样的函数:
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
指向的函数就像我在示例中给出的不接受参数的函数。