我需要帮助试图弄清楚为什么我的指针数组不起作用.我正在递增指针地址和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;
Run Code Online (Sandbox Code Playgroud)
在这个宣言中
int *arr = new int[10];
Run Code Online (Sandbox Code Playgroud)
指针arr由动态分配的数组的第一个元素的地址初始化.
在while循环中
while (i < 10){
*arr = i; // assign the value of arr to i
arr++; // increment the pointer by 1
i++; // increment i
}
Run Code Online (Sandbox Code Playgroud)
指针递增.
arr++;
Run Code Online (Sandbox Code Playgroud)
因此在循环之后它指向超出分配的数组和此语句
delete[] arr;
Run Code Online (Sandbox Code Playgroud)
是错误的,因为指针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;
Run Code Online (Sandbox Code Playgroud)