我承认这三个都有不同的含义。但是,我不明白这些都适用于哪些特定情况。任何人都可以分享每个例子吗?谢谢。
malloc(sizeof(int))
malloc(sizeof(int *))
(int *)malloc(sizeof(int))
malloc(sizeof(int))
意味着您正在从堆中分配空间来存储int
。您保留的字节数与int
需要。 这会返回一个您应该转换为的值int *
。 (一个指向int
.) 正如一些人所指出的,C 中的典型做法是让隐式转换来处理这个问题。
malloc(sizeof(int*))
意味着您正在从堆中分配空间来存储指向int
。您将保留指针所需的字节数。这将返回一个您应该转换为的值int **
。 (一个指向一个指针的指针int
.)
(int *)malloc(sizeof(int))
与第一次调用完全相同,但结果显式转换为指向int
.
请注意,在许多架构上,int
与指针大小相同,因此它们看起来(错误地)都是相同的东西。换句话说,您可能会意外地做错事情,但生成的代码仍然可以工作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)