假设以下函数原型:
void *function(int arg)
。
这是一个指向函数的指针吗?如果是这样,如果返回类型为void,它如何返回一个值?该函数的描述表明它可能返回一个正整数或NULL。由于这是两种不同的“类型”,这是void
的原因吗?为了避免类型转换?
答案 0 :(得分:3)
不,那不是指向函数的指针。它是一个返回void *
的函数,也称为通用指针。
指向返回void
的函数的指针是:
void (*function)(int arg);
功能不会返回任何内容。
答案 1 :(得分:2)
它不是指向函数的指针。它说它返回一个void指针。返回void *
的函数的优点是可以将它强制转换为函数中的任何类型。有关说明,请参阅here。
答案 2 :(得分:0)
它不是指向函数的指针;它是一个返回指向void
的指针的函数:即一个指向原始内存的无差别指针。返回void的函数的指针是void (*function)(int arg)
- 这些括号完全改变了含义。
答案 3 :(得分:0)
void *function(int arg);
不是指向函数的指针。它是函数的原型,返回void *
并且具有int
参数。
答案 4 :(得分:0)
不,它是一个原型,指定函数function
采用单个int
参数并返回void *
值。
指向函数的指针如下所示:
void *(*fn)(int arg);
这会创建一个指针fn
,指向与function
属性匹配的函数。