我刚刚开始学习C++,并在C++ Primer中遇到了两个练习。我不明白这个练习中的一个。
练习2.22 C++ Primer
假设p是指向int的指针,请解释以下代码:
if (p) //....
if (*p) //.... 正如我在1语句中所理解的,我们检查指针p的条件,无论它是true还是false。
在2语句中,所有操作都是相同的,但这次我们使用了dereference运算符。
如果我错了,你能告诉我我哪里错了吗。
下一次练习,我不明白
练习2.23
给定指针p,您能确定p是否指向有效的对象吗?如果是这样的话,是怎么做的?若否,原因为何?
我知道的是,当变量初始化并具有与指针相同的类型时,您可能知道指针指向有效的对象。而且,尝试访问无效指针也会导致代码问题,编译器也会发现这个问题。
这个练习还有什么可以补充的吗?还是我猜错了?
谢谢你抽出时间!
发布于 2013-04-09 03:47:59
假设
int *p = NULL;然后:
if (p)检查p是否为空,并将返回false。
if (*p)检查(*p) == 0,即p指向的整数是否为0。
如果你有
int *p;也就是说,如果不初始化它,p就会指向内存中的随机地址,并且
if (p)大部分时间都会回到真。和
if (*p)会产生不明确的行为。
https://stackoverflow.com/questions/15892928
复制相似问题