1
为什么“ The C Programming Language”这本书说我必须转换malloc?
今天,我到达了C编程语言(第二版Brian W. Kernighan和Dennis M. Ritchie)的第167页,发现作者说我必须强制转换。这是本书的一部分:malloc 7.8.5存储管理 函数malloc和calloc动态获取内存块。 void *malloc(size_t n) 返回一个指向n字节未初始化存储的指针,如果无法满足请求,则返回NULL。 void *calloc(size_t n, size_t size) 返回一个指向足够的可用空间的指针,该指针用于指定大小的n个对象的数组;如果无法满足请求,则返回NULL。存储初始化为零。由malloc或calloc返回的指针与所讨论的对象具有正确的对齐方式,但必须将其强制转换为适当的类型,如 int *ip; ip = (int *) calloc(n, sizeof(int)); 我已经知道malloc(及其家族)返回类型void *,并且有很好的解释为什么不强制转换malloc。 但是我的问题是:为什么这本书说我应该抛弃它?