ANN:我在一本书中看到了一个句子,有两个简单的规则要遵循:
1.当您在源代码中需要空指针常量时,请使用“0”或“NULL”。
2.如果在函数调用中使用“0”或“NULL”作为参数,则将其转换为被调用函数所需的指针类型。
第二个是什么意思?
小编:对于第一个文章,很容易理解,在指针的情况下,0是编译器指针空,但有些人不喜欢的事实,0看起来像在代码中一个神奇的数字,所以有NULL两者对于编译器都是相同的。即使空指针在某些平台上不是全0地址,也可以使用if(p==0)来判断,编译器会保证正确的。对于第二条,我在上一段说:“在指针的情况下,0是编译器指针空”,而是在一个函数调用,因为它不是一个上下文指针,编译器无法识别用0空指针,通常为良好的编程规范需要显式转换以产生空指针在函数调用的上下文中以强制编译器把0作为一个空指针表示,否则,编译器可以把它当作常数0。在熟悉的x86平台,我们只发现了一个警告,编译时最大,但在某些平台上,空指针是不是所有的地址为0,则有问题。