int y = 7;
int try4(){
return y;
}
int& try3() {
return y;
}
int main() {
cout<<"try4()="<<try4()<"try3()=" << try3() << endl;
return 0;
}
这串代码的运行结果如下:
try4()=7
try3()=7
try3()返回的也不是地址啊,光看它两的输出结果我感觉这两种写法都没区别了,神犇告告~~
这两种写法的区别是什么呢?
望采纳!!点击该回答右侧的“采纳”按钮即可采纳!!
实际上,这两种写法有很大的区别。
在第一种写法中,函数 try4 返回的是一个拷贝的值,也就是说,函数会将 y 的值复制一份并返回,而不是返回 y 的地址。因此,在这种情况下,你无法通过函数返回值来修改 y 的值。
而在第二种写法中,函数 try3 返回的是 y 的引用,也就是 y 的地址。这意味着,你可以通过函数返回值来修改 y 的值。
例如,你可以这样使用 try3 函数:
int main() {
try3() = 10;
cout << "try3()=" << try3() << endl; // 输出 "try3()=10"
return 0;
}
所以,当你需要通过函数返回值来修改变量的值时,应该使用引用作为函数的返回类型,而不是普通的值。
希望这对你有帮助。
就你现在的代码,两者是没有区别的。
如果改成
int a = try4();
int &b = try3();
这样就有区别了,比如你写b=10,printf("%d",y);,这样输出的就是10,b就是y。而如果写a=10,printf("%d",y);,那y还是7,a和y没有关系
当然有区别,引用即别名,引用即本身。
try4() 调用时必然发生复制,try3则不然