我正在忙于一个简单的概念来显示指针数组和C ++中for循环的迭代
我的编译器没有给予太多帮助,当我运行程序时,控制台会说出以下内容并返回3“应用程序已请求运行时以不寻常的方式终止。
崩溃发生在这一行:
cout << i + 1 << " " << *(pArray + i) << endl;
但是当我运行这个程序时,省略了i + 1或*(pArray + i)它运行时没有错误或崩溃。
我试图在上面尝试输出是否违法?
请参阅下面的代码:
#include <iostream>
#include <cstdlib>
using namespace std;
int main() {
int * pArray;
int SIZE;
int module;
pArray = new int[SIZE];
cout <<"Enter the number of Assignments ";
cin >> SIZE;
cout <<"input assignment number " ;
for (int i = 0; i < SIZE; i++)
{
cin >> module;
*(pArray + i) = module;
}
// Print array
for (int i = 0; i < SIZE; i++)
{
cout << i + 1 << " " << *(pArray + i) << endl;
}
cout << endl;
delete[] pArray; // Deallocate array via delete[] operator
return 0;
}
我承认有点紧张地问这个问题,但我只是需要有人来解释为什么会这样,因为我正在努力寻找关于这种情况的任何参考。
由于
答案 0 :(得分:1)
在初始化之前使用SIZE
两行。
移动
pArray = new int[SIZE];
之后获取SIZE
的值。
(另外:使用std::vector
会更容易。)
答案 1 :(得分:1)
int * pArray;
int SIZE;
int module;
pArray = new int[SIZE];
SIZE尚未初始化,因此,它将是一些垃圾值。 在使用之前将其初始化。
您还可以检查新的成功/失败。
pArray = new(nothrow) int[SIZE];
if(pArray)
//logic