【发布时间】:2013-05-17 17:02:40
【问题描述】:
我想知道为什么double (*fptr)()在梯形规则函数的参数列表中使用?
我知道这意味着双精度的文件指针。但是为什么我需要空括号呢?
【问题讨论】:
-
“双精度文件指针”甚至没有任何意义......
标签: c
我想知道为什么double (*fptr)()在梯形规则函数的参数列表中使用?
我知道这意味着双精度的文件指针。但是为什么我需要空括号呢?
【问题讨论】:
标签: c
你可能想试试http://cdecl.org/这样的问题:
C 胡言乱语 ↔ 英语
double (*fptr)()将 fptr 声明为指向返回 double 的函数的指针
【讨论】:
不是文件指针指向double,f代表function。
一旦您了解函数是如何定义的,这一点就会变得很明显:
double myfunc()
如果我现在想要一个指向不带参数并返回双精度的函数的指针,那么它的类型应该是
double (*)()
这是您的参数的类型。向其添加名称 (fptr) 会导致以下结果:
double (*fptr)()
是一个名为fptr(函数指针的缩写)的参数,它是一个指向不带参数并返回双精度值的函数的指针。
【讨论】:
它不是文件指针,声明double (*fptr)()意味着fptr是指向函数的指针,它返回一个double并且不带参数,(空括号意味着指向函数的指针 em>)
一个例子:假设你有一个类似的函数:
double fun(){
double d = 0.9;
return d;
}
然后您可以将fun的地址分配给fptr,例如:
fptr = fun;
您可以使用fptr 致电fun(),例如:
d = fptr()
d 是一些双变量
编辑
我觉得你需要知道Pointers To Functions,一般来说,我们定义的函数指针是这样的:
returntype function (argtype1, argtype2, argtype3)
指向此类函数的相应指针是
returntype (*ptr) (atgtype1, atgtype2, atgtype3);
注意这里没有空括号,但我使用参数类型,您的fptr 指向一个函数,就像我在示例中给出的不接受参数的函数。
【讨论】: