我目前正在学习 C++ Primer Fifth Edition。我已经阅读了其他几本 C++ 书籍,但它们不是很详细而且相当复杂。
这本书对我错过的一切帮助很大。我刚刚撞墙了。
其中一个练习要求我为一个函数编写一个声明,该函数返回一个包含十个字符串的数组的引用,而不使用尾随返回、decltype 或类型别名。
我知道它只说写一个声明,我已经这样做了,就像这样:
string (&returnArray()) [10];
我也想写一个函数定义,像这样:
string (&returnString(int i, string s)) [10]
{
string s1[10];
s1[i] = s;
return s1;
}
在我的主函数中,我有一个 for 循环,它传递一个字符串文字并将该字符串存储在指向十个字符串数组的指针中。然后它应该将结果输出到屏幕上。
我遇到的问题是,当我取消引用指向数组的指针时,它会输出地址。如果我取消引用它两次,程序不会输出任何内容并停止响应。
这是我的主要功能,我已经更改了多次,但无法弄清楚为什么它不能正确输出。我可能全都搞错了...
int main()
{
string (*s)[10];
for(int i = 0; i != 10; ++i)
{
s = &returnString(i, "Hello");
cout << s[i] << endl;
}
return 0;
}