oct*_*ian -1 c malloc void-pointers
编译器(这里我正在考虑gcc,但我想它可能是任何C编译器)是否关心变量的来源?如果指针来自malloc,为什么它会有区别?它只是某些编译器使用的优化还是在C标准中提到的?
不像其他(void*)指针
实际上在C中没有void *需要铸造,malloc在这方面没有什么特别之处.void *只要您处理对象指针(即不是函数指针),您就可以自动转换为.
或者是在C标准中提到的
我们什么时候需要一个明确的演员?标准说明了这一点:
6.5.4演员
除了6.5.16.1的约束允许之外,涉及指针的转换应通过显式转换来指定.
转到该部分:
[...]一个操作数是指向对象类型的指针,另一个是指向有资格或不合格的void [...]的指针.
所以你有它.没有明确的演员阵容void *.