【问题标题】:Pointer to Function Return指向函数返回的指针
【发布时间】:2012-03-22 03:27:58
【问题描述】:

假设如下函数原型:

void *function(int arg).

这是指向函数的指针吗?如果是这样,如果它的返回类型是无效的,它怎么能返回一个值?该函数的描述说它可能返回一个正整数或NULL。由于这是两种不同的“类型”,这就是void 的原因吗?避免类型转换?

【问题讨论】:

  • 不能返回正整数。它返回一个指针(可能是 NULL 指针)。

标签: c function pointers syntax


【解决方案1】:

不,这不是指向函数的指针。它是一个返回void * 的函数,也称为泛型指针。

指向返回 void 的函数的指针是这样的:

void (*function)(int arg);

而且那个函数不会返回任何东西。

【讨论】:

    【解决方案2】:

    它不是指向函数的指针。它说它返回一个 void 指针。返回void * 的函数的优点是您可以将其转换为函数中的任何类型。请参阅here 了解说明。

    【讨论】:

      【解决方案3】:

      它不是指向函数的指针;它是一个返回指向void 的指针的函数:即指向原始内存的未区分指针。指向返回 void 的函数的指针将是 void (*function)(int arg) -- 这些括号完全改变了含义。

      【讨论】:

        【解决方案4】:
        void *function(int arg);
        

        不是指向函数的指针。它是返回void * 并具有int 参数的函数原型。

        【讨论】:

          【解决方案5】:

          不,它是一个原型,指定函数 function 采用单个 int 参数并返回一个 void * 值。

          指向函数的指针如下所示:

          void *(*fn)(int arg);
          

          这会创建一个指针fn,它指向与function 的属性匹配的函数。

          【讨论】:

            猜你喜欢
            • 2013-04-10
            • 2011-01-12
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-06-25
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多