在开始前刚好我有一些资料,是我根据网友给的问题精心整理了一份「c语言的资料从专业入门到高级教程」,
点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家!!!这个答案很简单:c语言不区分,是因为它不需要区分。
出现这个设计的原因也很简单:因为指针在设计时,本质就是存放了地址值的整型。所以,如果不是为了便于对地址进行便捷的间接寻址,甚至都不需要设计出指针这种类型及相应的配套语法。而NULL的本意就是一个非法的指针,根本就不打算让你正常的寻址使用的,所以只要固定一个特异值做标识就行了——而这个特异值自然就是个整型(强转为void*,只是一个让它可以隐式转为任何类型指针的语法小技巧而已)。
所以,在纯c的环境下,没有重载等需要编译器推断类型的时候,这个设计是毫无问题的。
只有到了后来的c++里面,有了重载之后,这才成为一个问题。