假设以下函数原型:函数返回指针
void *function(int arg)
。
这是一个指向函数的指针吗?如果是这样,如果返回类型是无效的,它如何返回一个值?该函数的描述说它可能返回一个正整数或NULL。由于这是两种不同的“类型”,这是否是void
的原因?为了避免类型转换?
假设以下函数原型:函数返回指针
void *function(int arg)
。
这是一个指向函数的指针吗?如果是这样,如果返回类型是无效的,它如何返回一个值?该函数的描述说它可能返回一个正整数或NULL。由于这是两种不同的“类型”,这是否是void
的原因?为了避免类型转换?
它不是指向函数的指针。它说它会返回一个void指针。返回void *
的函数的优点是可以将它转换为函数中的任何类型。有关说明,请参见here。
它不是指向函数的指针;它是一个函数,返回指向void
的指针:即指向原始存储器的未区分指针。指向返回void的函数的指针是void (*function)(int arg)
- 这些括号完全改变了含义。
void *function(int arg);
不是指向函数的指针。它是返回void *
并具有int
参数的函数的原型。
不,它是一个原型,指定函数function
采用单个int
参数并返回void *
值。
指向一个函数看起来像这样:
void *(*fn)(int arg);
这产生了指针fn
其指向匹配的function
的属性的功能。
不,这不是指向函数的指针。这是一个返回void *
的函数,也称为泛型指针。
的指针,该返回void
将是这样一个功能:
void (*function)(int arg);
而且这功能不会返回任何东西。
它不能返回一个正整数。它返回一个指针(可能是NULL指针)。 – Celada 2012-03-22 03:33:50