从二维数组设置和获取值时出错

费利佩·威勒(Felipe Wieler)

当我输入一个数字时flag[1][2],我会自动将同样的数字输入flag[2][0]

为什么?

#include <iostream>
using namespace std;

void inicializarFlag(void);
void imrpimeflag(void);

int flag[2][2];

int main(){

    int i, j, escolha;

    inicializarFlag();
    cout<<"digite as posicoes e o valor: "<<endl;

    cin>>i;
    cin>>j;
    cin>>escolha;

    flag[i][j] = escolha;
    imrpimeflag();

    return 0;
}

void inicializarFlag(void){

    for (int i=0; i<=2; i++){
        for(int j=0; j<=2; j++){
            flag[i][j] = 0;
        }
    }
}

void imrpimeflag(void){

    for (int i=0; i<=2; i++){
        for(int j=0; j<=2; j++){
            cout<<"["<<i<<"]["<<j<<"]: "<<flag[i][j]<<endl;
        }
    }
}
CLL

初始化array时int flag[2][2],您正在初始化2x2数组,而不是3x3数组。由于数组的索引为零,因此flag[2][0]将int放在2x2标志数组第三行的第零列中,这超出了范围。将元素置于数组范围之外的行为是不确定的,并且可能导致您所描述的问题。

声明int flag[3][3],代码应该起作用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章