首页 > 试题广场 >

给定指针p,你能知道它是否指向了一个合法的对象吗?如果能,叙

[问答题]

给定指针p,你能知道它是否指向了一个合法的对象吗?如果能,叙

述判断的思路;如果不能,说明原因。

推荐

【出题思路】

本题旨在考查指针初始化,读者应该熟悉并掌握C++11的新语法特征nullptr

【解答】

C++程序中,应该尽量初始化所有指针,并且尽可能等定义了对象之后再定义指向它的指针。如果实在不清楚指针应该指向何处,就把它初始化为nullptr或者0 , 这样程序就能检测并知道它有没有指向一个具体的对象了。其中, nullptrC++11 新标准刚刚引入的一个特殊字面值,它可以转换成任意其他的指针类型。

在此前提下,判断p 是否指向合法的对象,只需把p 作为if语句的条件即可,如果

p 的值是nullptr,则条件为假;反之,条件为真。

如果不注意初始化所有指针而贸然判断指针的值,则有可能引发不可预知的结果。一种处理的办法是把if (p)置于try结构中,当程序块顺利执行时,表示p 指向了合法的对象;当程序块出错跳转到catch语句时,表示p 没有指向合法的对象。

发表于 2018-05-07 11:57:36 回复(0)