什么返回类型应该void * function()s使用?

时间:2017-05-27 20:51:26

标签: c

这两个测试在编译时都没有给我错误,但是它们返回了不同类型的指针。

if __name__ == '__main__':

这特别令人困惑,因为我正在尝试重新创建memcpy函数,我无法判断是否应该返回一个void指针或一个unsigned char指针。

1 个答案:

答案 0 :(得分:2)

在C中,任何对象指针类型都可以转换为void *void *可以转换为任何对象指针类型而无需任何转换。

您的代码遵守这些规则;没关系。编译器不应该抱怨。

ISO / IEC 9899:2011§6.3.2.3指针:

  

¶1指向void的指针可以转换为指向任何对象类型的指针。指向的指针   任何对象类型都可以转换为指向void并再次返回的指针;结果应该   比较等于原始指针。

请注意,'object'排除函数 - 函数指针具有单独的规则:

  

¶8指向一种类型函数的指针可以转换为指向另一种函数的指针   打字再回来;结果应该等于原始指针。如果转换了   指针用于调用类型与引用类型不兼容的函数,   行为未定义。