我必須寫一個程序,其中,i使用動態陣列:刪除動態數組
int size=1;
double* dyn_arr = new double[size];
int n=0;
double sum=0.0;
while(std::cin >> dyn_arr[n]){
sum = sum + dyn_arr[n++];
if(n==size){
size*=2;
double* new_array = new double[size];
std::copy(dyn_arr, dyn_arr + n, new_array);
delete[] dyn_arr;
dyn_arr = new_array;
}
}
我無法理解的部分dyn_arr = new_array
delete[] dyn_arr
之後。 dyn_arr
是數組dyn_arr
的第一個元素上的指針,不是嗎?我如何刪除指針/數組並再次寫入dyn_arr = new_array
?
我不知道我明白你在問什麼。看起來你展示瞭如何在代碼中做點什麼,然後問如何去做。嗯..用你展示的代碼。是否有一些代碼的功能不理解?在delete [] dyn_arr之後的 –
,dyn_arr指向的數組被釋放,dyn_arr是一個懸掛指針。你可以重新分配給這個指針,例如'nullptr'或指向另一個有效地址的指針,比如'new_array' – BeyelerStudios
謝謝你,那就是問題所在。我在理論部分看到它,但我想再次要求確認。 – Susliks