1

我想知道为什么double (*fptr)()在梯形规则函数的参数列表中使用?

我知道这意味着双精度的文件指针。但为什么我需要空括号?

4

3 回答 3

4

对于这样的问题,您可能想尝试http://cdecl.org/ :

C 胡言乱语 ↔ 英语

double (*fptr)()

将 fptr 声明为指向返回 double 的函数的指针

于 2013-05-16T12:44:22.063 回答
3

这并不意味着文件指针指向 double, f 代表function

一旦您查看函数的定义方式,这一点就会变得显而易见:

double myfunc()

如果我现在想要一个指向不带参数并返回双精度的函数的指针,它将是类型

double (*)()

这是您的参数的类型。向其添加名称 ( fptr) 会导致以下结果:

double (*fptr)()

是一个名为fptr(函数指针的缩写)的参数,它是一个指向不带参数并返回双精度的函数的指针。

于 2013-05-16T12:42:41.950 回答
1

它不是文件指针,声明的double (*fptr)()意思fptr指向函数的指针,它返回 adouble并且不带参数,(空括号表示指向函数的指针

一个例子:假设你有一个像这样的函数:

double fun(){
  double d = 0.9;
  return d; 
}

然后您可以将地址分配funfptr喜欢:

fptr = fun;

您可以fun()使用以下方式调用fptr

d = fptr()

d双变量在哪里

编辑
我觉得你需要知道 Pointers To Functions,一般来说,我们定义的函数指针如下:

returntype function (argtype1, argtype2, argtype3)

指向此类函数的相应指针是

returntype (*ptr) (atgtype1, atgtype2, atgtype3);  

请注意,这里没有空括号,但我使用了参数类型,其中您fptr指向的函数就像我在示例中给出的不接受参数的函数。

于 2013-05-16T12:42:50.853 回答