Necessity of use (float*) before malloc

This question already has an answer here:

  • Do I cast the result of malloc? 27 answers

  • Malloc returns a pointer to void.

    (float*) casts from a pointer to void to a pointer to float

    In C this is not necessary, in C++ it is, so some people recommend that to make your code compatible with C++ compilers.

    But you don't need to do that. (and some C fans are against it)


    malloc will give you a pointer to void that you can't use for anything related to things you want to do with a float . To be able to use the variable allocated at the returned memory location, you need to cast it to a float* so you can dereference that pointer and use it as a float .

    But, as you've written your question, you should cast the return value of malloc to float* and then immediately dereference it before assigning it to x , since you've not declared x as a pointer to float .

    EDIT: As commenters pointed out, the explicit cast is only needed in C++, not in C.

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

    上一篇: 我什么时候需要用C语言来投射malloc的结果?

    下一篇: 在malloc之前使用(float *)的必要性