我想声明一个字符串,通过引用传递它来初始化它,然后通过值将其传递给'outputfile'函数。在C++中通过引用和值传递字符串
下面的代码工作,但我不知道为什么。在主我希望通过字符串“文件名”像
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'创建一个指针。指针和引用不兼容。 – 2015-02-08 05:28:35
为什么你不想使用返回值? – 2015-02-08 05:35:19
代码“起作用”,因为它完全符合您所描述的内容。在你的开头句中,并且做得很好。关于'&filename'错误,它不应该编译,因为引用不是一个指针。见[这个问题和答案](http://stackoverflow.com/questions/57483/what-are-the-differences-between-a-pointer-variable-and-a-reference-variable-in)。关于他们的差异和相似之处。 – WhozCraig 2015-02-08 05:42:53