【发布时间】:2017-04-16 23:53:24
【问题描述】:
这在 C 中是如何允许的?
int p= (int) malloc (sizeof(int));
我只在 gcc 中编译时收到警告。
警告:从指针转换为不同大小的整数 [-Wpointer-to-int-cast]
void 指针不能转换为原始类型,对吧?
*((int*)(x))//is allowed - assume x is of type void*
但是如何也允许直接转换为原语?
【问题讨论】:
-
其实可以投的。
-
是的。允许这样做,以便您可以将指针投射到
intptr_toruintptr_t。 -
@LưuVĩnhPhúc:将指针转换为整数类型的能力早于
intptr_t和uintptr_t的存在。 -
C 允许很多可能是不好的做法。该语言取决于程序员知道他们在做什么。