我想聲明一個字符串,通過引用傳遞它來初始化它,然後通過值將其傳遞給'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