首页 > 解决方案 > 不能从函数返回字符串

问题描述

我遇到的问题是当我编译我的代码时,我得到一个错误(未初始化的局部变量“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);

}

标签: c++

解决方案


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

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

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

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

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

int optionNumber = 42;

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

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

推荐阅读