我必须写一个程序,其中,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