当我们对整数指针ptr使用"if(ptr == NULL)"时,NULL指针是否隐式转换为type(int*)?

Tho*_*hom 3 c casting void-pointers null-pointer

我知道NULL指针是(void*)0.But当我们使用如下语句时会发生什么:

  if(ptr==NULL)
Run Code Online (Sandbox Code Playgroud)

其中ptr可以是一个char,floatint指针?是NULL保证被隐式转换为左侧的类型,正如,例如,在C,类型通过返回malloc()void*但隐式转换为左值的类型?

bit*_*tek 6

是否保证NULL被隐式转换为左侧的类型?[...]

是.

根据ISO/IEC 9899:2011 C编程语言标准的 6.3.2.3.4节:

将空指针转换为另一种指针类型会产生该类型的空指针.任何两个空指针都应该相等.

以及第6.3.2.3.1节

指向void的指针可以转换为指向任何对象类型的指针.指向任何对象类型的指针可以转换为指向void的指针,然后再返回; 结果应该等于原始指针.