扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
可以的。sum创建的空间在函数结束时就析构了,但是由于函数返漏猜回sum的值,所以会在函数返回的堆栈中将sum的值保留返回的。
创新互联服务项目包括双鸭山网站建设、双鸭山网站制作、双鸭山网页制作以及双鸭山网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,双鸭山网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到双鸭山省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
这点碰键和sum是否还存在是没有关系的,这是另一套返吵型编译机制
楼上几位说的基本详细了,就是返回引用的意思,指返回值是一个引用。你老师说错了。
所谓返回引用是指返回一个已存在对象的引用,(切记一定要是已经存在的)
所谓引用其实就是包装指针的一个语法糖,
所谓语法糖就是说使用引用的地方用指针也可以实现,只不过要写更多的代码。
教科书上对引用这种数据类型讲得很简单,用它给变量起“别名”的作用甚至让人觉得它是多姿核余的!粗册裤
其实它真正的用武之地是在参数传递中!
众所周知在C语言中不论是从实参到形参,还是从局部变量到返回值,都是清一色的值传递。
值传递意味着全拷贝,不仅效率低下,更多的时候它也并非是你想要的语义。
试想你要去月球,现在从你身上取一个细胞克隆出一个与你同样的人,让它去完成你的探月计划,
然后回来给你讲它的所感所受,或许你能听得身临其境,并且它的成功证明换成你也行,但这是你想要的吗?
T fun(T t){return t;} void main() {T t; t=fun(t);}
在上面的代码中你能发现几个变量?
1.主函数main()中定义了局部变量t
2.调用fun()函数时,自动产生一个局部变量(也就是形参表中的变量t)用于接受实参岩简的值
3.函数fun()返回它自己的形参变量t时,又自动了产生一个匿名临时变量用于存放返回值
T fun(T t){return t;} void main() {T t; t=fun(t);}
与上面的代码相比较,不存在第2个和第3个变量。
使用引用常见有以下几种情形:(很不全面,抛砖引玉)
情形一:返回函数实参 T fun(T t){return t;}
情形二:返回静态变量 T fun(){static T t; return t;}
情形三:返回当前对象 T T::fun(){return *this;}
情形四:返回新建对象 T fun(){return *new T;}
注意与最后一种情形类似但不等价的指针形式如下:
T fun(){T* pt=new T(); return *pt;} //除非显式调用delete,否则对象(*pt)不会被释放!
引用好像岁毁迟不是这么余指用的。。。
引用是作为函数的参数,传递给函数,这样函数就乎李可以操作外部的变量。
返回值是指针。声明为 int *whw(int a, int b),在里面return。
引用的用法是:int whw(int a, int b)。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流