• 4960阅读
  • 5回复

编程中遇到一个问题,请教大家! [复制链接]

上一主题 下一主题
离线xiaoweide
 
只看楼主 倒序阅读 楼主  发表于: 2011-12-05
代码类似:
xx *p;//定义一个类指针
delete p;//删除该指针
下面需要判断该指针是否存在。
为什么用
if( p == NULL) return;
无法判断呢?
而用:
if( p )return;
可以?

PS:调试过程中,似乎if( p == NULL) return;能判断指针p是否为有效值;而if( p )return;则能判断
指针是否存在(即是否分配了地址)。
离线dbzhang800

只看该作者 1楼 发表于: 2011-12-05
先好好补补C、C++中的指针的概念吧。不然你自己都不清楚你现在在说什么^_^
离线ninsun

只看该作者 2楼 发表于: 2011-12-06
判断指针是否有效可是c++里的一个天大的难题...
光凭p != NULL 可是无法真正确定的哦...

还有一个最最重要的地方就是...
delete p;
不会让p变成NULL...
离线longchisihai
只看该作者 3楼 发表于: 2011-12-12
delete 是释放指针所指向的动态分配的对象,不是删除指针哦~
int main()
{
    int *p = new int(10);
    cout << p << endl;
    cout << *p << endl;
    delete p;
    p = new int(20);
    cout << p << endl;
    cout << *p << endl;
    return 0;
}

好好体会下吧。
离线caicaiking

只看该作者 4楼 发表于: 2011-12-17
发现3楼解释的好详细,我不懂的人看了也明白了三四分。
离线jdwx

只看该作者 5楼 发表于: 2011-12-17
new在堆里分配一块内存
delete把这块内存收回,还给系统。
指针就是保存这块内存地址的变量。
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
快速回复
限100 字节
 
上一个 下一个