0

我刚开始学习 C++,在 C++ Primer 中遇到了 2 个练习。1 这个练习我看不懂。

练习 2.22 C++ Primer
假设p是一个指向 的指针int,解释以下代码:

if (p) //....  
if (*p) //....  

正如我在 1 语句中所理解的,我们检查指针 p 的条件是它true还是false
在 2 语句中,所有操作都是相同的,除了这次我们使用取消引用运算符
如果我错了,你能告诉我我的错误在哪里。

还有下一个练习,这个练习我看不懂
练习2.23
给定一个指针p,你能确定是否p指向一个有效的对象吗?如果是这样,怎么做?如果不是,为什么不呢?

我知道的是,当您的变量初始化并具有与指针相同的类型时,您可能知道您的指针指向有效对象。并且尝试访问无效指针也会带来代码问题,并且编译器 ant 会发现这个问题。
这个练习还有什么可以补充的吗?还是我的猜测错了?
感谢您的时间 !

4

1 回答 1

1

假设

int *p = NULL;

然后:

if (p)

检查 p 是否为 NULL 并将返回 false。

if (*p)

检查(*p) == 0,即所指向的整数是否p为0。

如果你有

int *p;

即,不初始化它,然后p将指向你内存中的随机地址,并且

if (p)

大多数时候会返回true。和

if (*p)

将给出未定义的行为。

于 2013-04-09T03:47:59.783 回答