消息关闭
    暂无新消息!

c++中函数运行结束后变量存在问题

问题作者 : Reaney2017-08-29发布
struct cash{
int a;
int b;
};
有代码
const cash & copy(cash & ft)
{
     cash newguy;
     newguy  =  ft;
     return newguy;
}
问题1:上面的这个函数返回的是什么,结构吗?newguy变量在运行结束后不是会消失吗?

const cash & copy2(cash & ft)
{
      cash *pt;
      *pt =ft ;
      return  *pt;
}
我有点不是特别理解这里的为什么  ft  直接赋值给 *pt ????要是把&看成取地址符号,那么让指针指向某一变量
的命令不是pt=&ft  吗?
问题2:直接给*p赋值是什么意思?这里为什么能够返回一个结构的引用?

ps:求详细的解释    或者   给出可以去通彻了解该问题的建议与方法(看书和查资料的途径都可以的),新人谢谢大家了。

3个回答

︿ 2
两个都是有问题的代码:
const cash & copy(cash & ft)
{
     cash newguy;
     newguy  =  ft;
     return newguy; //局部变量,退出函数后内存被销毁。所以外部引用了一个已经销毁的对象,极其容易造成运行时崩溃
}

const cash & copy2(cash & ft)
{
      cash *pt; //未初始化,此处没有对其分配内存,正确应为 cash *pt = new cash;
      *pt =ft ; //这里是值赋值,是复制ft的值到*pt,没有问题
      return  *pt; //返回一个已经动态分配内存(假如)的引用,没有问题
}
︿ 1
而且对于第二个函数而言,当函数运行结束时,ft 的内存不应该被释放了吗?这时候指针指的不就是NULL了吗?