【发布时间】:2015-04-08 01:53:28
【问题描述】:
我想声明一个字符串,通过引用传递它来初始化它,然后通过值传递给'outputfile'函数。
下面的代码有效,但我不知道为什么。在 main 中,我希望传递字符串 'filename' 之类的
startup(&filename)
但这会产生错误,而下面的代码不会。为什么?另外,有没有更好的方法可以在不使用返回值的情况下做到这一点?
#include <iostream>
#include <string>
using namespace std;
void startup(std::string&);
void outputfile(std::string);
int main()
{
std::string filename;
startup(filename);
outputfile(filename);
}
void startup(std::string& name)
{
cin >> name;
}
void outputfile(std::string name)
{
cout << name;
}
【问题讨论】:
-
&filename创建一个指针。指针和引用不兼容。 -
为什么不想使用返回值?
-
代码“有效”,因为它完全按照您的描述进行。在你的开场白中,做得很好。关于
&filename的错误,它不应该编译,因为引用不是指针。见this question and answers。关于它们的异同。
标签: c++ string pass-by-reference pass-by-value