Rad*_*dya 0 c++ arrays numbers
我试着输入两个数组,A和B.但每次我输入最后一个B数,除了它改变了B [i + n]的值,它还替换了A [0]的值.这是代码:
#include <iostream>
using namespace std;
/*
*
*/
int main(int argc, char** argv) {
int a[] = {};
int b[] = {};
int t, i;
cout << "Amount of numbers: ";
cin >> t;
for (i = 0; i < t; i++) {
cout << "Enter number for A" << i+1 << ": ";
cin >> a[i];
cout << "Enter number for B" << i+1 << ": ";
cin >> b[i];
}
for (i = 0; i < t; i++) {
cout << a[i] << " ";
cout << b[i] << " ";
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
例如
Amount of numbers: 2
Enter number for A1: 1
Enter number for B1: 2
Enter number for A2: 3
Enter number for A3: 4
Run Code Online (Sandbox Code Playgroud)
输出应该是1 2 3 4,但是从代码我得到4 2 3 4(B [1]替换A [0]的值.
有人可以帮我解决这个问题吗?谢谢
问题是您正在使用具有未指定大小的两个堆栈分配的数组,因为您初始化它们是0 { }.
这些数组不是动态的,你不能像你一样添加元素.它们的大小必须直接指定或通过初始化指定,并且在编译时保留在堆栈中,这意味着如果您尝试访问a超过其大小的元素,那么您将最终进入,b因为它们存储在其旁边其他.
std::vector<int>改为使用两个,这样你就可以做到
std::vector<int> a;
..
a.resize(t);
..
cin >> a[i]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
667 次 |
| 最近记录: |