malloc需要typecast吗?
这个问题在这里已经有了答案:
我假设你的意思是这样的:
int *iptr = (int*)malloc(/* something */);
而在C中,你不必(也不应该)从malloc
投下返回指针。 它是一个void *
并且在C中,它被隐式转换为另一个指针类型。
int *iptr = malloc(/* something */);
是首选的形式。
这不适用于C ++,它不共享相同的void *
隐式强制转换行为。
您不应该在C中使用malloc()
的返回值。这样做是:
void *
与任何其他指针类型兼容(函数指针除外,但这不适用于此)。 所以:没有好处,至少有三个缺点,因此应该避免。
您不需要投射malloc
的返回值。 这在C FAQ中进一步讨论:http://c-faq.com/malloc/cast.html和http://c-faq.com/malloc/mallocnocast.html。