我需要帮助才能弄清楚为什么我的指针数组不起作用。我正在递增指针地址和I.我的控制台窗口只是悬挂。
int *arr = new int[10];
int i = 0;
while (i < 10){
*arr = i; // assign the value of arr to i
arr++; // increment the pointer by 1
i++; // increment i
}
delete[] arr;
答案 0 :(得分:6)
在此声明中
int *arr = new int[10];
指针arr由动态分配的数组的第一个元素的地址初始化。
在while循环中
while (i < 10){
*arr = i; // assign the value of arr to i
arr++; // increment the pointer by 1
i++; // increment i
}
指针递增。
arr++;
因此在循环之后它指向超出分配的数组和此语句
delete[] arr;
是错误的,因为指针arr
现在不存储已分配数组的原始地址。
我认为你的意思是以下
const int N = 10;
int *arr = new int[N];
int i = 0;
for ( int *p = arr; p != arr + N; ++p ){
*p = i++; // assign the value of i to *p
}
for ( int *p = arr; p != arr + N; ++p ) std::cout << *p << ' ';
std::cout << std::endl;
delete[] arr;