C++ 函数类型中的星号

C++ 函数类型中的星号,c++,function,C++,Function,我在网上找到了一些代码。下面的代码中包含一些我不明白的东西 string* buildPrompt() { // Code for chat server } 字符串后面的星号是什么?如果我删除它,代码会停止工作吗?在您的示例中,星号绑定到返回类型,并指示函数返回指向字符串实例的指针 如果删除星号,则表示您正在按值返回字符串实例 星号表示该类型是指向它所连接的任何类型的指针,因此int*是指向int的指针,而int**是指向int的指针,依此类推 要访问作为指针返回的字符串实例,必须通过在返回

我在网上找到了一些代码。下面的代码中包含一些我不明白的东西

string* buildPrompt()
{
// Code for chat server
}

字符串后面的星号是什么?如果我删除它,代码会停止工作吗?

在您的示例中,星号绑定到返回类型,并指示函数返回指向字符串实例的指针

如果删除星号,则表示您正在按值返回字符串实例

星号表示该类型是指向它所连接的任何类型的指针,因此int*是指向int的指针,而int**是指向int的指针,依此类推

要访问作为指针返回的字符串实例,必须通过在返回值前面加*或使用箭头运算符->访问成员来取消引用它。因此,代码:

string* str = buildPrompt();
cout << *str << endl;
cout << (*str).c_str() << endl;
cout << str->c_str() << endl;
将输出相同的文本三次,在第一个示例中,通过在字符串后面传递指向运算符星号的取消引用指针,我们取消了类的限制并输出其中的值,这意味着它是指向内存中其他位置的字符串对象的指针。删除星号会更改函数的返回类型:

string* buildPrompt();  // <-- Returns pointer to a string.
string buildPrompt();   // <-- Returns an instance of a string.
我建议在C++中对指针做一些基本的阅读,一旦你从简单的Hello,World中发展,它们对语言来说是非常重要的。节目


对字符串和字符串*不是一回事。你应该去学习C++。@ RaKeE1111我学会了C++…但是我不记得导师在说了关于星号的任何东西。我知道C++是一个巨大的超文本。要彻底学习C++需要很长时间,如果你在使用指针时遇到什么问题,你需要在这里采取更为简陋的方法:你显然没有学习C++。由语言的创造者编写,阅读它Cover to Cover商店,一旦你了解它里面的一切,你就已经开始学习C++。永远不要忘记C++是极其不宽容的,它会因为无辜的错误而严厉惩罚你。毫无疑问,还有一些对你的学习很有帮助,但是如果没有官方的参考,你将会在一张不完整的图片上工作。