首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++初级运动

C++初级运动
EN

Stack Overflow用户
提问于 2013-04-09 03:45:18
回答 1查看 834关注 0票数 0

我刚刚开始学习C++,并在C++ Primer中遇到了两个练习。我不明白这个练习中的一个。

练习2.22 C++ Primer

假设p是指向int的指针,请解释以下代码:

代码语言:javascript
复制
if (p) //....  
if (*p) //....  

正如我在1语句中所理解的,我们检查指针p的条件,无论它是true还是false

在2语句中,所有操作都是相同的,但这次我们使用了dereference运算符。

如果我错了,你能告诉我我哪里错了吗。

下一次练习,我不明白

练习2.23

给定指针p,您能确定p是否指向有效的对象吗?如果是这样的话,是怎么做的?若否,原因为何?

我知道的是,当变量初始化并具有与指针相同的类型时,您可能知道指针指向有效的对象。而且,尝试访问无效指针也会导致代码问题,编译器也会发现这个问题。

这个练习还有什么可以补充的吗?还是我猜错了?

谢谢你抽出时间!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-09 03:47:59

假设

代码语言:javascript
复制
int *p = NULL;

然后:

代码语言:javascript
复制
if (p)

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

代码语言:javascript
复制
if (*p)

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

如果你有

代码语言:javascript
复制
int *p;

也就是说,如果不初始化它,p就会指向内存中的随机地址,并且

代码语言:javascript
复制
if (p)

大部分时间都会回到真。和

代码语言:javascript
复制
if (*p)

会产生不明确的行为。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15892928

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档