如何在数组中打印所需数量的元素?

时间:2018-11-14 08:46:28

标签: c++ arrays for-loop arraylist

如果我要打印带有single dimensional array个元素的n。我可以将array初始化为array[n]吗?

#include "pch.h"
#include <iostream>

using namespace std;

int main()
{
    int n;

    std::cout << "Please enter the number of elements (n): ";
    std::cin >> n;

    int array[n];

    for (int i = 0; i <= n; i++) {
        std::cin >> array[n];
    }
    return 0; 
}

2 个答案:

答案 0 :(得分:2)

由于C ++不支持与C99相反的可变长度数组(VLA),因此您必须使用其他方式在C ++中分配任意大小的内存,例如std::vector

#include <iostream>

int main()
{
    int n;

    std::cout << "Please enter the number of elements (n): ";
    std::cin >> n;

    std::vector<int> foo(n);

                    // valid indexes range form 0 to size - 1: < n instead of <= n
    for (int i = 0; i < n; ++i)
        std::cin >> foo[i];
}

还要在i循环中混合nfor

std::cin >> array[n] << " ";
                     ^^^^^^

也不起作用。

答案 1 :(得分:1)

在C ++中,您不能初始化具有可变长度的数组。要么你:

  • 动态分配内存

    int *array = new int[n];

    在这种情况下,您不应忘记稍后使用

    进行分配

    delete[] array;

  • 或者您可以使用std::vector

    std::vector<int> array(n);

    在退出范围时将被释放。

其他错误是:

  • for循环应类似于

    for (int i = 0; i < n; i++)

    因为有n个元素,所以数组索引从0到n-1。

  • 要阅读输入内容,您只需使用

    std::cin >> array[n]

    您使用>><<组合编写的代码无法正常工作。