尝试填充2d数组但它仍然是1d数组C ++

时间:2015-07-11 21:42:29

标签: c++ arrays

我是编程的新手,我正在尝试填充一个简单的2d数组,但是当我测试代码时,它显示为1d数组,包含我所需的2d数组的元素。

void clearBoard(int row, int col) 
{
    int grid[row][col];
        for (int i = 0; i < row; i++) {
            for (int j = 0; j < col;j++) {
                grid[i][j] = 0;
                cout << grid[i][j] << " ";

            }
        }   cout << endl;
}

int main()
{
    int row1 = 2;
    int col1 = 2;
    //int _row = atoi(argv[0]);
    //int _col = atoi(argv[2]);
    //int _grid[5][5];
    //setBoard(row, col);

    //cout << "enter the size of the board:";
    //cin >> _row >> _col;
    clearBoard(row1, col1);

这是输出:

  

0 0 0 0

我想得到我的输出:

0 0 
0 0

如你所见,我注释掉了

int _row = atoi(argv[0]);
int _col = atoi(argv[2]);

cin >> _row >> _col;

是获得任何大小数组的正确方法吗?

谢谢你们。

2 个答案:

答案 0 :(得分:3)

将你的cout << endl;移动到你的for循环中(它实际上是两个都没有),因为除非你将它移动到主for循环中,否则它将打印所有结果而没有换行。:< / p>

注意:由于C ++中的数组必须具有常量大小,int grid[row][col]将不起作用,因为row和col是非常量的参数。

void clearBoard(int row, int col) 
{
    int grid[row][col]; 
    for (int i = 0; i < row; i++) 
    { 
        for (int j = 0; j < col;j++) 
        { 
            grid[i][j] = 0; cout << grid[i][j] << " ";     
        } 
        cout << endl;
    }
} 

对于常量大小错误的修复方法是使用std::vector<std::pair<int, int> >代替,但这需要进行一些重写。

答案 1 :(得分:0)

这是因为您在外循环后打印 for (int i = 0; i < row; i++) { for (int j = 0; j < col;j++) { grid[i][j] = 0; cout << grid[i][j] << " "; } cout << endl; //Print newline after printing a row }

只需将其更改为:

const int rows = 5;
const int cols = 5;
  

是获得任何大小数组的正确方法吗?

与Java不同,您可以在运行时声明数组大小。在C ++中,如果要设置数组大小,则大小必须是常量。

你可以这样做:

identify