c++ - 不能从函数返回字符串
问题描述
我遇到的问题是当我编译我的代码时,我得到一个错误(未初始化的局部变量“optionNumber used”
为此,我在 macbook air 上使用了 Visual Studio 2017。
这是我的代码:
#include "pch.h"
#include <iostream>
int runMenu(int optionNumber) {
std::cout << "Choose an option \n";
std::cout << "1) Create Array \n";
std::cout << "2) View Array \n";
std::cout << "3) Add/Delete Values \n";
std::cin >> optionNumber;
return(optionNumber);
};
int main()
{
int optionNumber;
int optionNum;
optionNum = runMenu(optionNumber);
std::cout << optionNum;
return(0);
}
解决方案
int main() { int optionNumber; ^^^^^^^^^^^^^^^^
在这里,您已经声明了一个局部变量。您没有提供初始化程序。因此,本地整数具有不确定的值。如果您读取一个不确定的值,您的程序的行为将是未定义的。
optionNum = runMenu(optionNumber); ^^^^^^^^^^^^
在这里,您将值不确定的变量复制到参数中。因此程序的行为是未定义的。幸运的是,您的编译器注意到了这个错误并发出警告。
最简单的解决方案:初始化变量:
int optionNumber = 42;
另一方面,您可能想考虑一下您所写的内容。您传递给函数的runMenu
值永远不会在函数中使用。传入的任何值都将被从标准输入中提取的任何值覆盖。争论是完全没有意义的。您可以将输入读入局部变量,而不是参数:
int runMenu() {
// your std::cout stuff
int optionNumber;
std::cin >> optionNumber;
推荐阅读
- angular - 如何以角度拖动和重新排序内容
- reactjs - TypeError:无法读取未定义的属性“hasError”
- python - Django - PostgreSQL 设置 statement_timeout
- javascript - 检查 Javascript 对象未定义
- json - 如何在 Flutter Mobile App 中加载和查询本地 json 数据
- javascript - JQuery Hide 不适用于 .after
- google-cloud-platform - BigQuery 通配符架构推断会清除有效的 STRUCT
- quill - 如何在 Quill.js 上设置每个段落的数据?
- android - 我正在工作 Xamarin.forms 并在 xaml 文件中收到此错误
- python-3.x - 损失不变:Python 3.6 中的反向传播与 MNIST 数据集