C ++入门练习

时间:2013-04-09 03:45:19

标签: c++

我刚刚开始学习C ++,并在C ++ Primer中遇到了两个练习。我无法理解这个练习中的一个。

练习2.22 C ++入门
假设p是指向int的指针,请解释以下代码:

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

正如我在1个语句中所理解的那样,我们检查指针p的条件是true还是false
在2语句中,除了这次我们使用解引用运算符
之外,所有动作都是相同的 如果我错了,你能告诉我我的错误吗?

下一个练习,这个练习我无法理解 练习2.23
给定指针p,您可以确定p是否指向有效对象?如果是这样,怎么样?如果没有,为什么不呢?

我知道的是,当您的变量初始化并且与指针具有相同的类型时,您可能知道您的指针指向有效对象。并且尝试访问无效指针可能会导致代码问题,并且编译器蚂蚁会发现此问题 还有其他关于此练习的内容可以添加吗?或者我的猜测是错的? 谢谢你的时间!

1 个答案:

答案 0 :(得分:1)

假设

int *p = NULL;

然后:

if (p)

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

if (*p)

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

如果你有

int *p;

即没有初始化,那么p会指向你记忆中的随机地址,

if (p)

大部分时间都会返回true。和

if (*p)

会给出未定义的行为。