c++ - 为什么我不能从字符串函数返回字符串数组?
问题描述
我想使用我的函数创建一个字符串数组,但我的字符串函数的返回不起作用。
string input() {
int months[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 };
string array[12];
for (int i = 0; i < 12; i++)
{
int j = 0;
while (j < months[i])
{
array[i] = array[i] + "-";
j++;
}
}
return array[12];
}
int main() {
string array[12];
array[12] = input();
return 0;
}
解决方案
首先,您的函数被声明为返回单个 std::string
对象。其次,返回12 个元素数组中的array[12]
第13个元素。
而且您实际上不能从函数返回纯数组。数组衰减为指向其第一个元素的指针,并且随着函数返回时数组的生命周期结束,该指针将立即变为无效。
有几个解决方案:要么将数组(作为指向第一个元素的指针)作为参数传递给函数。或者返回例如一个std::array
对象。
推荐阅读
- c# - 如何使用 EF Core 为现有的 oracle 数据库生成模型类表和视图
- node.js - 部署到 AWS 时 Node.js api 不起作用
- javascript - Javascript中的INNER JOIN
- angular - 如何使用 Angular8/Material 在 mat-select 中添加全选触发器
- django - 如何在 Django 函数视图中添加两个渲染
- azure - 从 javascript 中的另一个 azure 函数调用 azure 函数
- c++ - 使用 -fno-ellide-constructors 编译时连续调用移动构造函数
- c++ - 你如何 static_cast 一个 std::unordered_set?
- javascript - 我可以使用两个 id 访问一个元素吗?
- javascript - 如何将 Javascript 文件链接到另一个 Javascript 文件