每个循环的C ++打印数组

时间:2016-07-13 22:55:05

标签: c++ arrays loops

我目前正在学习编程和学习C ++。我尝试使用for each循环打印出一个数组,但我得到了一些奇怪的输出。这是我的代码。

#include<iostream>
using namespace std;
int main(){
        int length;
        cin >> length;
        cout << "Enter " << length << " numbers!\n";
        int x[length];  
        for (int i : x){
                cin >> i;
        }
        for (int i : x){
                cout << i << endl;
        }      
        return 0;
}

我进行了测试,这是我的输入和输出

5
Enter 5 numbers!
1
2
3
4
5
78344035
1
2031166200
32767
1528080880

如果有人能告诉我我做错了什么,我真的很感激。感谢

1 个答案:

答案 0 :(得分:2)

您的第一个循环会将x的每个元素复制到i,并且您每次都会流式传输到该副本i

for (int i : x){
      cin >> i;
}

要流入数组,请按引用获取每个元素:

for (int& i : x){
            cin >> i;
}

请参阅this answer

同样,您正在使用不是标准C ++的VLA