返回信息流我写了一个存储二维平面上点的库,其中头文件point.h如图一,point.cpp如图二,测试函数main.cpp如图三,测试结果图四,不知道为啥最后输出main_point的值不是0??[ema1]
这是一条镜像帖。来源:北邮人论坛 / cpp / #98611同步于 2019/1/18
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
关于c++ new delete的问题
gcl
2019/1/18镜像同步9 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
第二张图里的point是局部变量
你需要传一个引用进来
【 在 gcl (chigo) 的大作中提到: 】
: 我写了一个存储二维平面上点的库,其中头文件point.h如图一,point.cpp如图二,测试函数main.cpp如图三,测试结果图四,不知道为啥最后输出mai...
: --
void ptdestroy(POINT** p) {
if (!p) return;
delete *p;
*p = NULL;
}
// call ptdestroy
// POINT* point;
ptdestroy(&point);
【 在 tonyjansan 的大作中提到: 】
: [code=c]
: void ptdestroy(POINT** p) {
: if (!p) return;
: ...................
多谢大佬,你这样写可以,可我还是不懂为什么要这样写?
【 在 specops 的大作中提到: 】
: 第二张图里的point是局部变量
: 你需要传一个引用进来
多谢大佬,可是我还是不懂,这和局部变量有什么关系呢?
空间被delete掉了然而赋值0的操作只是局部指针变量的行为
【 在 gcl (chigo) 的大作中提到: 】
: 多谢大佬,可是我还是不懂,这和局部变量有什么关系呢?
因为指针是按值传递 所以你只修改了局部的新point 而不是原来的
【 在 gcl (chigo) 的大作中提到: 】
: 多谢大佬,可是我还是不懂,这和局部变量有什么关系呢?
if(!*p)return;
【 在 tonyjansan (FOR THOSE WHO DO.) 的大作中提到: 】
: [code=c]
: void ptdestroy(POINT** p) {
: if (!p) return;
: ...................
C++标准delete NULL是合法操作,只需要检查二级指针不为空就可以了
【 在 specops 的大作中提到: 】
: if(!*p)return;