我写了一个大程序,它有一些意外的行为,所以我制作了另一个较小的程序来测试问题。
我的问题是,由于某种原因,每当我cin
元素[0][2]
出现在2x2数组中时
它还会复制到元素[1][0]
例如,如果我的数组是
000
000
000
,然后将右上角的元素输入为“ A”(例如),然后左中角的元素也变为“ A”,反之亦然。
[1][2]
和[2][0]
这是我的代码:
#include<iostream>
using namespace std ;
char array[2][2];
void display()
{
cout<<endl;
for (int i=0;i<3;i++ )
{
for (int j=0;j<3;j++ )
{
cout<<array[i][j];
}
cout<<endl;
}
}
int main ()
{
for (int i=0;i<3;i++ )
{
for (int j=0;j<3;j++ )
{
array[i][j]='0';
}
}
display();
cin>>array[0][2];
display();
}
答案 0 :(得分:2)
如果您最多要访问array[2][2]
,则必须将数组定义为char array[3][3];
。
数组T foo[SIZE]
的有效索引为0 ... SIZE - 1
。
请注意,array
是一个非常糟糕的名称,因为还有std::array<>
,并且您正在使用using namespace std;
,这会将所有符号从命名空间std溢出到全局命名空间中。 / p>
使用
#include <iostream>
using namespace std;
char array[3][3];
void display()
{
cout << endl;
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
cout << array[i][j];
}
cout << endl;
}
}
int main()
{
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
array[i][j] = '0';
}
}
display();
cin >> array[0][2];
display();
}
它按预期工作:
输出:
000
000
000
A
00A
000
000