无法从函数返回字符串

时间:2019-04-13 01:42:28

标签: c++

我遇到的问题是当我编译我的代码时,我得到一个错误(未初始化的局部变量“ optionNumber used”

为此,我正在Macbook上使用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);

}

1 个答案:

答案 0 :(得分:4)

int main()
{   
    int optionNumber;
    ^^^^^^^^^^^^^^^^

在这里,您已经声明了局部变量。您尚未提供初始化程序。因此,局部整数具有不确定的值。如果您读取一个不确定的值,则程序的行为将是不确定的。

optionNum = runMenu(optionNumber);
                    ^^^^^^^^^^^^

在这里,您将值不确定的变量复制到参数中。因此,程序的行为是不确定的。幸运的是,您的编译器注意到了此错误,并发出了警告。

最简单的解决方案:初始化变量:

int optionNumber = 42;

另一方面,您可能需要考虑一下自己写的东西。传递给函数runMenu的值永远不会在函数中使用。传递的任何值都将被从标准输入中提取的任何值覆盖。该论点是完全没有意义的。您可以将输入读取到局部变量中,而不用使用参数:

int runMenu() {
    // your std::cout stuff
    int optionNumber;
    std::cin >> optionNumber;