ReadingLab / Discussion-for-Cpp

C++ 中文讨论区
MIT License
88 stars 63 forks source link

Exercise 2.3.2[by Xiao`] #2

Closed Mooophy closed 9 years ago

Mooophy commented 9 years ago

Xiao` :

2.23:给定指针p,你能知道它是否指向了一个合法的对象吗?如果能,叙述判断的思路;如果不能,请说明原因.

指针有4种,如下:

  1. 指向一个对象int i=1024; int *pi=&i;
  2. 指向紧邻对象所占空间的下一个位置(话说才看到第2章,此处不懂);
  3. 空指针int *p1=nullptr,*p2=0,*p3=NULL;.
  4. 无效指针,上述情况之外的其他值. 1.2是合法的对象,3.4应该是不合法的. 是这样么?

再者,这题目怎么解?

Mooophy commented 9 years ago

Xiao` :

*(解引用符)来查看一个指针是否合法,可行? 解引用操作仅适用于那些确实指向了某个对象的有效指针,所以如果std::cout<<*p<<std::endl;出错的话,可以表示p指针就是非法的了?

Mooophy commented 9 years ago

没什么太好的方法,具体context需要不同的方法。 这道题的意义也不在于让读者提出靠谱的方案,而是引导读者思考指针的模型而已。暂时不用太当回事儿。

pezy commented 9 years ago

这个问题很大,对于初学者,我答案里已经给出,就是 NO。

请参考知乎的讨论:http://www.zhihu.com/question/24331527

FYI

PeteHenry commented 9 years ago

谢谢 解答 上面的问题,的确太大,目前的我是无需理解