gpt4 book ai didi

c++ - 用指针写条件的几种方式的区别

转载 作者:行者123 更新时间:2023-11-30 02:07:32 25 4
gpt4 key购买 nike

我想知道是否有人可以总结以下编写涉及指针的条件语句的方法之间的区别:

if(p)
if(p != 0)
if(p != NULL)

我经常迷茫在以下几种情况下(肯定还有很多,请补充你的)什么时候使用which:

static char *p1;
char *p2 = new char();
const char *p3 = "hello"; /*then I repeatedly do p3++*/
char *p4 = 0;
char *p5 = NULL;

编辑

此外,我想知道,对于 char *p,我们有 while(*p) 还是 while(*p!=0 ),可能等效于 while(p)while(p!=0)while(p!=NULL)while(*p!='\0')(或任何其他?)在 while 循环内的一些 p++ 之后?

最佳答案

if(p)

在这种情况下,p 被转换为 bool,它实际上与 p != 0 相同。

if(p!=0)

这是检查空指针的显式方法,与上一个相同。

if(p != NULL)

与这个不同的是NULL是一个宏;在 C 中定义为 (void*)0 而在 C++ 中定义为 0。同样,它与前两个表达式的检查相同。

基本上,它们都做同样的事情(除了 NULL 宏没有被定义或被重新定义为其他东西)。我倾向于使用 p != 0 因为它与 p 相同但它明确说明。使用 NULL 的版本需要包含 stddefcstddef 这通常不是问题。

在 C++11 中,有一种检查空指针的新方法:nullptr,这是一个新关键字。如果可用,这将是理想的选择,因为它清楚地表明 p 是一个指针:

if( p != nullptr )

关于c++ - 用指针写条件的几种方式的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7761812/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com