【问题标题】:What does double (*fptr)() mean in parameter list for trapezoidal rule function?梯形规则函数的参数列表中的 double (*fptr)() 是什么意思?
【发布时间】:2013-05-17 17:02:40
【问题描述】:

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

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

【问题讨论】:

  • “双精度文件指针”甚至没有任何意义......

标签: c


【解决方案1】:

你可能想试试http://cdecl.org/这样的问题:

C 胡言乱语 ↔ 英语

double (*fptr)()

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

【讨论】:

    【解决方案2】:

    不是文件指针指向double,f代表function

    一旦您了解函数是如何定义的,这一点就会变得很明显:

    double myfunc()
    

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

    double (*)()
    

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

    double (*fptr)()
    

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

    【讨论】:

      【解决方案3】:

      它不是文件指针,声明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 指向一个函数,就像我在示例中给出的不接受参数的函数。

      【讨论】:

        猜你喜欢
        • 2013-05-10
        • 2019-12-12
        • 2012-12-12
        • 1970-01-01
        • 2013-11-08
        • 2016-03-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多