c语言 malloc分配空间后返回的指针为什么需要类型转换?

2024年11月27日 12:49
有2个网友回答
网友(1):

malloc返回值根本不需要类型转换。。。 历史上曾经需要把malloc的返回指针强制转换,那是因为当时malloc的返回值是 char*,, ,后来c引入了void *类型,根本就不需要转换了。而且编译器不会给出任何警告! void *类型本来就是为了这种目的而引入的! 你再加一个类型转换,就多此一举了。

网友(2):

因为malloc函数返回的是void类型指针,而不同类型的指针是不能相互赋值的。就像你不能把int类型的指针附给char类型的指针一样。所以通过强制转换为需要的类型,才能方便使用。