【问题标题】:Declaring a function with a lot of pointers用大量指针声明一个函数
【发布时间】:2013-12-08 16:02:11
【问题描述】:

如何将 f 声明为指向函数的指针(指向整数的指针,双精度指针)以 返回指向整数的指针

我尝试了很多变体,包括:

(int**)(f*)(int**,double)
(**int)(f*)(int**,double)
*(int)(f*)(int**,double)

【问题讨论】:

  • 嗨,我知道你是新来的。如果您认为某个答案解决了问题,请单击绿色复选标记将其标记为“已接受”。这有助于将注意力集中在仍然没有答案的旧问题上。
  • 嗨,现在已经完成了,抱歉这么晚才标记它。

标签: c


【解决方案1】:

那就是:

int**(*f)(int**,double)

根据cdecl.org的意思是:

将 f 声明为指向函数的指针(指向 int 的指针,double)返回指向指向 int 的指针的指针

我不相信您可以在返回类型周围加上括号,并且指向函数部分的 * 需要位于声明名称的左侧。

【讨论】:

    【解决方案2】:

    函数签名:

    int** func(int**, double);
    

    函数指针声明:

    int** (*f)(int**, double);
    

    【讨论】:

    • 我喜欢你介绍这个的方式。 In 表示你只需将函数写下来,然后将名称替换为(*f)
    【解决方案3】:

    【讨论】:

    • 谢谢 :) 是的,指向函数的指针确实很有用,但有点扭曲。 Xolve 对此进行了很好的细分。
    【解决方案4】:

    试试

    int** (*f)(int**, double);
    

    【讨论】:

      【解决方案5】:

      我读了你的描述,把它分成几部分,这里是:

      int **     (*f)(  int **,         double)
       ^           ^       ^               ^
       |           |       |               |
       |       pointer to  |               |
       |       function    |               |
       |                   |               |
       |                 pointer to        |
       |                 pointer to        |
       |                 integer           |
       |                                double
       |
       |
      return pointer to pointer to integer
      

      其实就是这么简单。

      你应该阅读C FAQ on Declarations它以非常简单和全面的方式解释了它们。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-05-16
        • 1970-01-01
        • 2016-08-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多