【问题标题】:declaration of variable of this kind "int (*pfds)[2];" what they are called [duplicate]此类变量的声明“int (*pfds)[2];”他们叫什么[重复]
【发布时间】:2020-12-21 07:41:42
【问题描述】:

我正在研究简单的源代码。并找到了这一行

 int (*pfds)[2];

是否表示指向类似函数的指针

     void (*fun_ptr)()[2] = &fun; 

我认为是指向函数fun(void)的指针数组

【问题讨论】:

    标签: c


    【解决方案1】:

    int (*pfds)[2];----> pfds 是一个指向 2 个元素的数组的指针。

    void (*fun_ptr)()[2]----> 将fun_ptr 声明为指向函数的指针,该函数返回由 void 的 2 个元素组成的数组。但它是无效的。因为在 C 中,函数返回数组是不允许的。

    void* (*fun_ptr)() -----> 将fun_ptr 声明为指向函数返回的指针,指向void 的指针。这是有效的。如果你想返回一个 void 类型的数组,这就是你所需要的。

    【讨论】:

    • 函数不能返回数组
    【解决方案2】:

    int (*pfds)[2]; 是一个指向包含两个元素的数组的指针。

    括号在那里是因为int *pfds[2]; 将是一个由两个指针组成的数组,如char *argv[] 是一个字符指针(即字符串)数组。

    函数指针void (*fun_ptr)() 有第二组括号,用于参数列表:int (*add)(int x, int y)

    void (*fun_ptr)()[2]void *fun_ptr() 似乎无效。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-04-16
      • 1970-01-01
      • 2013-04-21
      • 1970-01-01
      • 2020-08-24
      • 2016-01-20
      • 1970-01-01
      相关资源
      最近更新 更多