C++ C++;-测试空指针最有效的方法是什么?
在测试指针空性的两种方法中,最有效的方法是什么:C++ C++;-测试空指针最有效的方法是什么?,c++,performance,pointers,C++,Performance,Pointers,在测试指针空性的两种方法中,最有效的方法是什么:if(pointer==NULL)或if(!pointer) 这与以往任何时候都没有区别。这纯粹是一个你喜欢什么的风格问题 顺便说一下,如果您使用C++11或更高版本,您应该使用NULL ptr而不是NULL。这些都是相同的。无论你使用什么,它都不会改变你的程序 我更喜欢if(ptr),因为: 它又短又清晰 它不依赖于NULL关键字。在C++11或更高版本上必须是nullptr 发件人: 它们与C++类(如AutoTypTR)兼容,这些对象充当指针
if(pointer==NULL)
或if(!pointer)
这与以往任何时候都没有区别。这纯粹是一个你喜欢什么的风格问题
顺便说一下,如果您使用C++11或更高版本,您应该使用
NULL ptr
而不是NULL
。这些都是相同的。无论你使用什么,它都不会改变你的程序 我更喜欢if(ptr)
,因为:
NULL
关键字。在C++11或更高版本上必须是nullptr
我更喜欢
if(p!=NULL)
,因为它可以防止意外错误的发生,比如在声明和使用之间使用int
在这里,编译器应该发出警告,因为int不同于NULL
(最初NULL=(void*)0
)
此外,我更愿意这样声明:
MyObject* p=NULL;
因为你不能保证p
不会有不同的zéro值。如果您没有在声明和使用之间实例化它
而且,它也不像以前那样具有误导性
if(p==NULL){}else{}
可能发生在意外赋值中(仅一个=)
在C++11或更高版本中,即使调用
NULL
仍在工作,但已被弃用,这可能会对代码进行一些更改。我非常怀疑它们是否编译到不同的程序集。@BoBTFish我毫不怀疑。我可以试试看。根据我的说法,我在我们的项目中使用的东西都是一样的。这取决于你的代码要求,如果你想要满足的条件,根据你想要执行的条件if,if满足到true。最重要的是,在你在if中进一步使用它之前,确保你的指针初始化为NULL。@NickyC他们没有提到编译器,cpu体系结构、操作系统、优化选项。。。
MyObject* p=NULL;