Tho*_*hom 3 c casting void-pointers null-pointer
我知道NULL指针是(void*)0.But当我们使用如下语句时会发生什么:
if(ptr==NULL)
Run Code Online (Sandbox Code Playgroud)
其中ptr可以是一个char,float或int指针?是NULL保证被隐式转换为左侧的类型,正如,例如,在C,类型通过返回malloc()是void*但隐式转换为左值的类型?
是否保证NULL被隐式转换为左侧的类型?[...]
是.
根据ISO/IEC 9899:2011 C编程语言标准的 6.3.2.3.4节:
将空指针转换为另一种指针类型会产生该类型的空指针.任何两个空指针都应该相等.
以及第6.3.2.3.1节
指向void的指针可以转换为指向任何对象类型的指针.指向任何对象类型的指针可以转换为指向void的指针,然后再返回; 结果应该等于原始指针.