为什么当我修改第二个数组(arrTwo)时我的第一个数组(arrOne)也被修改? [重复]

问题描述 投票:0回答:1

当我输入“12345”和“0”的用户输入时,我看到在第一个循环中 arrOne 正在按照我期望的方式填充 1, 2, 3, 4, 5。但是在第二个循环之后(填充arrTwo)当我去打印 arrOne 的值(使用第三个循环)时,我看到这些值现在是 0, 2, 3, 4, 5。

我对在初始循环后如何修改 arrOne 的初始值感到摸不着头脑。感谢任何指导!

#include <iostream>
#include <string>
#include <iomanip>

using namespace std;

int main()
{
    // Write your main here
    string inputOne = "";
    string inputTwo = "";


    cout << "Please enter two positive integers up to 20 digits long" << endl;
    cin >> inputOne;
    cin >> inputTwo;

    int arrOne[inputOne.length() - 1];
    int arrTwo[inputTwo.length() - 1];

    for(int i = 0; i< inputOne.length(); i++){
        arrOne[i] = inputOne[i] - '0';
        cout<< "arrOne[i] = " << arrOne[i] << endl;
    }

    for(int i = 0; i< inputTwo.length(); i++){
        arrTwo[i] = inputTwo[i] - '0';
        cout<< "arrTwo[i] = " << arrTwo[i] << endl;
    }

    for(int i = 0; i< inputOne.length(); i++){
        cout<< "arrOne[i] = " << arrOne[i] << endl;
    }

    return 0;
}

我期望在填充 arrTwo 数组后,arrOne 数组将继续存储 1, 2, 3, 4, 5。

c++ arrays
1个回答
0
投票

不确定这是否是您需要的,请检查此,

#include <iostream>
#include <string>
#include <iomanip>

using namespace std;

int main()
{
    // Write your main here
    string inputOne = "";
    string inputTwo = "";

    cout << "Please enter two positive integers up to 20 digits long" << endl;
    cin >> inputOne;
    cin >> inputTwo;

    int* arrOne = new int[inputOne.length()];
    int* arrTwo = new int[inputTwo.length()];

    for(int i = 0; i< inputOne.length(); i++){
        arrOne[i] = inputOne[i] - '0';
        cout<< "arrOne[i] = " << arrOne[i] << endl;
    }

    for(int i = 0; i< inputTwo.length(); i++){
        arrTwo[i] = inputTwo[i] - '0';
        cout<< "arrTwo[i] = " << arrTwo[i] << endl;
    }

    for(int i = 0; i< inputOne.length(); i++){
        cout<< "arrOne[i] = " << arrOne[i] << endl;
    }

    delete[] arrOne;
    delete[] arrTwo;

    return 0;
   }

我从 g++ 得到的输出是;

Please enter two positive integers up to 20 digits long
12345
0
arrOne[i] = 1
arrOne[i] = 2
arrOne[i] = 3
arrOne[i] = 4
arrOne[i] = 5
arrTwo[i] = 0
arrOne[i] = 1
arrOne[i] = 2
arrOne[i] = 3
arrOne[i] = 4
arrOne[i] = 5

你的代码输出是;

Please enter two positive integers up to 20 digits long
12345
0
arrOne[i] = 1
arrOne[i] = 2
arrOne[i] = 3
arrOne[i] = 4
arrOne[i] = 5
arrTwo[i] = 0
arrOne[i] = 0
arrOne[i] = 2
arrOne[i] = 3
arrOne[i] = 4
arrOne[i] = 5
© www.soinside.com 2019 - 2024. All rights reserved.