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

如何修复自定义函数的打印输出异常问题?

如何修复自定义函数的打印输出异常问题?

嘿,我来帮你捋捋问题出在哪哈!你现在遇到的情况是因为几个小误区导致的,咱们一步步来改:

首先,你直接写 std::cout << function; 的时候,C++ 会把函数名当成函数指针来处理,而 cout 打印非空函数指针的时候,默认会输出 1(因为指针非空,转成布尔值就是 true,也就是1),这肯定不是你想要的结果。

再看你的函数本身,还有两个问题:

  • 你的 function 是 void 类型,也就是没有返回值,就算你调用它,也没法直接拿到里面的"John";
  • 而且参数里的 std::string people 是传值传递,你在函数里给 people 赋值"John",改的只是函数内部的局部变量,外面根本拿不到这个值。

那怎么改呢?给你两种常见的解决办法:

方法一:让函数返回字符串

把函数改成返回 std::string 类型,直接返回目标字符串,然后调用函数来打印:

#include <iostream>
#include <string> // 注意要加这个头文件,不然std::string可能会报错

std::string function(); // 修改函数声明

int main(){
    std::cout << function(); // 这里要调用函数,记得加括号!
    return 0;
}

std::string function(){
    return "John"; // 直接返回我们要的字符串
}

方法二:用引用传递参数

如果你不想修改函数的返回类型,可以用引用传递,让函数直接修改外部的变量,之后打印这个变量就行:

#include <iostream>
#include <string>

void function(std::string& people); // 参数改成引用,加个&符号

int main(){
    std::string name;
    function(name); // 把name传进去,函数会直接修改它
    std::cout << name; // 打印修改后的name
    return 0;
}

void function(std::string& people){
    people = "John"; // 现在修改的是外部传入的变量本身
}

最后再划个重点:你之前的核心问题一是没正确调用函数(直接写函数名不是调用,调用必须加括号 function()),二是函数的设计没法把内部的字符串传递出来。上面两种方法都能解决你的问题,第一种更直接,适合这种简单返回值的场景~

备注:内容来源于stack exchange,提问作者NAYbabal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.13 16:53:19