malloc需要typecast吗?

这个问题在这里已经有了答案:

  • 我输入malloc的结果吗? 27个答案

  • 我假设你的意思是这样的:

    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。

    链接地址: http://www.djcxy.com/p/28421.html

    上一篇: Is typecast required in malloc?

    下一篇: Why do we cast return value of malloc?