请问为什么这个指针数组不能接受超过5个值?
从Prata的C ++书中做练习,但是被卡住了。
//ex2_numrow -- showing entered numbers til zero is entered
#include <iostream>
using namespace std;
int main()
{
int n = 0;
int num = 0;
int* entered = new int[1];
do
{
cout << "Enter number: ";
cin >> num;
entered[n] = num;
cout << "Your numbers: ";
for (int i = 0; i <= n; i++)
{
cout << entered[i] << " ";
}
cout << endl << endl;
n++;
} while (num);
delete[] entered;
return 0;
}
答案 0 :(得分:2)
代码int* entered = new int[1];
为您提供了一个指向大小为 one!
然后尝试在该数组之外写入值是非常不明智的(即未定义的行为)。 最佳案例是您的代码在导致任何严重问题之前会崩溃。
顺便说一句,在C ++中,原始指针的用例集正在迅速减少,您通常应该使用智能指针。
我之所以说“一般”是因为,如果您的意图是拥有一个可调整大小的数组,那么即使智能指针也无济于事。我想称呼{em> 会有所帮助:{-} :-)您可能应该考虑将其用于您的直接目的。
例如,该程序接受正数,将其添加到向量中,然后将其打印出来:
std::vector