C ++指针数组将不接受更多值

时间:2019-11-16 06:09:38

标签: c++ pointers

请问为什么这个指针数组不能接受超过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;
}

1 个答案:

答案 0 :(得分:2)

代码int* entered = new int[1];为您提供了一个指向大小为 one!

的数组的指针。

然后尝试在该数组之外写入值是非常不明智的(即未定义的行为)。 最佳案例是您的代码在导致任何严重问题之前会崩溃。

  

顺便说一句,在C ++中,原始指针的用例集正在迅速减少,您通常应该使用智能指针。

我之所以说“一般”是因为,如果您的意图是拥有一个可调整大小的数组,那么即使智能指针也无济于事。我想称呼{em> 会有所帮助:{-} :-)您可能应该考虑将其用于您的直接目的。

例如,该程序接受正数,将其添加到向量中,然后将其打印出来:

std::vector