矜(bai)持(gei)的云拏 2023-01-01 14:22 采纳率: 80%
浏览 19
已结题

int&作为函数返回类型


int y = 7;
int try4(){
    return y;
}
int& try3() {
 
    return y;
}
int main() {
    cout<<"try4()="<<try4()<<endl;
    cout << "try3()=" << try3() << endl;
    return 0;
}

这串代码的运行结果如下:


try4()=7
try3()=7

try3()返回的也不是地址啊,光看它两的输出结果我感觉这两种写法都没区别了,神犇告告~~
这两种写法的区别是什么呢?

  • 写回答

4条回答 默认 最新

  • heart_6662 2023-01-01 14:38
    关注

    望采纳!!点击该回答右侧的“采纳”按钮即可采纳!!
    实际上,这两种写法有很大的区别。

    在第一种写法中,函数 try4 返回的是一个拷贝的值,也就是说,函数会将 y 的值复制一份并返回,而不是返回 y 的地址。因此,在这种情况下,你无法通过函数返回值来修改 y 的值。

    而在第二种写法中,函数 try3 返回的是 y 的引用,也就是 y 的地址。这意味着,你可以通过函数返回值来修改 y 的值。

    例如,你可以这样使用 try3 函数:

    int main() {
    try3() = 10;
    cout << "try3()=" << try3() << endl; // 输出 "try3()=10"
    return 0;
    }

    所以,当你需要通过函数返回值来修改变量的值时,应该使用引用作为函数的返回类型,而不是普通的值。

    希望这对你有帮助。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 1月9日
  • 已采纳回答 1月1日
  • 创建了问题 1月1日

悬赏问题

  • ¥15 hexo+github部署博客
  • ¥15 求螺旋焊缝的图像处理
  • ¥15 blast算法(相关搜索:数据库)
  • ¥15 请问有人会紧聚焦相关的matlab知识嘛?
  • ¥15 网络通信安全解决方案
  • ¥50 yalmip+Gurobi
  • ¥20 win10修改放大文本以及缩放与布局后蓝屏无法正常进入桌面
  • ¥15 itunes恢复数据最后一步发生错误
  • ¥15 关于#windows#的问题:2024年5月15日的win11更新后资源管理器没有地址栏了顶部的地址栏和文件搜索都消失了
  • ¥100 H5网页如何调用微信扫一扫功能?