c++ 动态增长阵列,直到用户输入0

blmhpbnm  于 2023-01-15  发布在  其他
关注(0)|答案(1)|浏览(185)

我正在尝试创建一个动态增长数组,每当用户输入0以外的整数时,该数组的大小都会增加。当按下0时,它停止从用户获取数据,并执行其余代码。我尝试通过do while循环实现增长数组,但它总是在数组中给我垃圾值。

int main(){
    int size = 1;
    int* ptr;
    int* ptr1;
    int i = 0;
    int inp;
    ptr = new int[size];
    do{
        ptr1 = new int[size];
        cin >> inp;
        if (inp == 0)
            break;
        else{
            *(ptr + i) = inp;
            size++;
            i++;
            for (int j = 0; j < size; j++){
                *(ptr1 + j) = *(ptr + j);
            }
        }
    } while (1);
    for (int k = 0; k < size; k++)
        cout << *(ptr1 + k) << endl;
    system("pause");
    return 0;
}
9bfwbjaz

9bfwbjaz1#

当你退出循环时,你已经再次保留了内存。也就是说,你已经把ptr1指向了一个你还没有初始化的size整数的内存地址。还要注意,当你写*(ptr + i) = inp;时,你试图写你还没有分配的内存。这是因为尽管你增加了ptr1,你没有对ptr做同样的事情。

相关问题