You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何C++字符串反转函数f在函数体内用cout有效,调用后用cout无效?

问题原因解析
  • 核心差异来自函数参数的传递方式:

    1. 你的第一段代码里,函数f的参数应该是传值形式(比如void f(string s))。这种情况下,程序会把main里的字符串a完整复制一份,给函数内部的局部变量s用。
    2. 你在f里做的反转操作,只改了这个复制出来的局部变量s,和原来的a一点关系都没有。函数执行结束后,这个局部变量s会被销毁,main里的a还是原来的样子,所以输出"abcd"。
    3. 第二段代码里在f内部输出的是那个已经被反转的局部变量s,所以能看到"dcba",但这不会影响main里的原字符串a。
  • 如果你想让main里的a也变成反转后的结果,有两种简单方法(不用指针也能搞定):

    • 改用引用传递:把函数参数改成void f(string &s),这里的&相当于给原字符串a起了个“外号”,函数里对s的修改会直接作用在a上。
    • 让函数返回反转后的字符串:把函数写成string f(string s),反转完s后返回它,然后在main里用a = f(a)接收结果。

内容的提问来源于stack exchange,提问作者mahmoud mirghani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 23:55:13