【发布时间】:2023-01-12 19:07:20
【问题描述】:
我正在尝试制作一个动态增长的数组,每当用户输入 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;
}
【问题讨论】:
-
请始终使用编程语言标签,否则没有人会找到您的问题。在本例中为 C++。
-
如果可以,请使用
std::vector。如果不是,将数组增长代码移到单独的函数中,每次将大小增加到 1 以上,以避免频繁分配。在复制数组的旧内容后,您忘记执行delete[] ptr; ptr = ptr1;。 -
我们还没有学习过 std :: vector,这只是一个粗略的代码,但我会尝试实现你所说的。谢谢你
-
*(ptr + i)是否需要使用它而不是ptr[i]?ptr[i]形式的使用更为广泛,尽管据说他们完成了同样的事情。 -
我们不需要使用 *(ptr+in)。如果他们完成同样的事情我可以使用 ptr[i]