概述
return 在执行之前会创建一个临时的变量,来保存要传回的值,
返回值:返回一个副本值,原本的已被消除
返回指针:当返回的时候,原指针空间会被消除,如果没有被其它程序使用,则是能正确返回,如果释放后被其它程序使用,则会有可能修改掉此空间内的值,返回值会错误;
什么样的值除了函数仍然有效:
1.全局变量;
2.static变量;因为static相当于一个全局变量,不会被系统回收
例:
#inlcude<iostream.h>
int& sum(int,int);
int main(void){
int x = 5,y = 10;
printf("%dn",sum(x,y));
return 0;
}
int& sum(int a,int b){
static int x;
x = a+b;
return x;
}
3.int* p = new int;
返回p的时候,会产生一个p的副本,本身已经无效了,但是p的副本里
存有它new出来的地址,所以是有效的。(对于地址没有手动释放是有效的
)
例:
int* small(int x,int y){
int* p = new int;
return p;
}
4.如果传递的是一个引用,而且返回的也是引用的话,则可以正确的返回,因为它是在函数外定义的。
#include<iostream>
int& max(int&,int&);
int main(){
int x = 15,y = 10;
printf("%dn",max(x,y));
return 0;
}
int& max(int &a,int &b){
if(a>b)
return a;
else
return b;
}
5.如果传递的是变量,而且返回的也是变量,也可以正确返回。但是它创建一个副本返回时,如果不及时接收的话,会消失。
注意:永远不要返回本地变量的指针和引用,会有错误;
最后
以上就是单纯蜻蜓为你收集整理的c++语言初学-return返回值注意:永远不要返回本地变量的指针和引用,会有错误;的全部内容,希望文章能够帮你解决c++语言初学-return返回值注意:永远不要返回本地变量的指针和引用,会有错误;所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复