整数不会更改为0

时间:2018-11-11 12:04:24

标签: c++

我试图创建一个函数来更改cout和cin,而不复制粘贴代码,但是当我尝试使用它时,它总是输入0

void enterdata(string data, int data2) // Inputing datas
{
    cout << "Please Enter your ";
    cout << data.c_str() << endl;
    cin >> data2;
}
void input1() // Saving/Creating New
{
    system("cls");
    enterdata("Mobile Number", number);
    cout << "Your number is " << number << endl;
}

3 个答案:

答案 0 :(得分:2)

您的int data2变量是enterdata本地变量。函数返回后将销毁它。

如果要更改传递的变量,则要引用传递的参数:

void enterdata(string data, int& data2)

答案 1 :(得分:1)

调用enterdata()时必须将值作为参考传递。这是因为您期望该值会更改,然后在以后的调用函数中使用该值。传递为参考将允许您使用具有更改值的变量。否则会导致变量中存在一些默认值或垃圾值。

因此您的代码应像这样更改:

void enterdata(string data, int& data2) // Inputing datas       <-- note change here
{
    cout << "Please Enter your ";
    cout << data.c_str() << endl;
    cin >> data2;
}
void input1() // Saving/Creating New
{
    system("cls");
    enterdata("Mobile Number", number);
    cout << "Your number is " << number << endl;
}

答案 2 :(得分:0)

有一些建议将data2更改为引用或指针。但是还有第二种更简单的方法。只需返回值

int enterdata(string data) // Inputing datas
{
    cout << "Please Enter your ";
    cout << data.c_str() << endl;
    int data2;
    cin >> data2;
    return data2;
}
void input1() // Saving/Creating New
{
    system("cls");
    int number = enterdata("Mobile Number");
    cout << "Your number is " << number << endl;
}