是否需要输入
可能重复:
我输入malloc的结果吗?
我在Google上寻找malloc和calloc类型转换的原因。 但是,我只发现malloc的类型转换没有必要,因为它返回void指针,但calloc呢 。 这也是calloc的原因?
现在,如果我们回到第一点,关于malloc和calloc的返回值。 然后,我发现,两者都返回分配的空间。 所以,我在这里有点困惑。 所以,我的问题是
malloc和calloc的返回值是什么
是否需要输入malloc和calloc 。 为什么?
malloc和calloc的返回值是什么?
它是一个指向void
( void*
)的指针。
是否需要输入malloc和calloc。 为什么?
不,因为从指针到void
的转换到指向Object的指针是隐式的。
C11(n1570),§6.3.2.3指针
指向void
的指针可以被转换为指向任何对象类型的指针,
这对于malloc
和calloc
都是正确的。
malloc()
或calloc()
返回void *
,它可以分配给任何指针类型。在C中,不需要对void*
进行类型转换,因为它是由编译器隐式地完成的。但是在c ++中,如果你不会强制转换
malloc
和calloc
的返回值是一个void*
。 这些函数分配的堆内存空间的地址。
这两个函数都分配内存。 它们之间的唯一区别是
在C中,不建议使用这些函数的返回值。
在C ++中,它是强制性的。
链接地址: http://www.djcxy.com/p/28359.html