使用字符c ++初始化2D数组

时间:2014-04-03 00:29:29

标签: c++ arrays char 2d

我正在尝试初始化2D数组以创建一个将在程序开头打印出星星的地图。我在函数中初始化了。每当我尝试运行程序时,我都会疯狂的数字。有关如何使这个2D阵列正确的任何提示?这是我的代码和结果:

void InitializeArray()
{
char map[Y_DIM][X_DIM];

for (int row = 0; row < Y_DIM; row++)
{
   for (int col = 0; col < X_DIM; col++)
   {
      cout << map[row][col];
      cout << "*";
   }
cout << endl;
}
}

这是我的结果

`*2*.*v*/***************
******************
?*?*?*u*/****?*?*?*?*?*?*?*?*?*!*`**
****?*!*`******?*!*`******
?*-*?**?****U*?*7*v*/****?**@**
****?*?*7*v*/*****E*]*v*/****
?*!*`*******-*?**?****?*!*`**
****?**@******p*    *@******
?*-*?**?****************
****?*?*7*v*/****p* *@******

2 个答案:

答案 0 :(得分:3)

这不是初始化阵列,而是打印它。鉴于它没有初始化,它会打印垃圾。

而不是:

 cout << map[row][col];

你想要:

map[row][col] = '*';

这将为数组中的每个单元格设置初始值,也就是说,初始化它。

您也可以在使用C ++的数组初始化程序语法定义数组的同时执行此操作,但您的方法更好。

答案 1 :(得分:0)

我要做什么:

#include <iostream>
using namespace std;
const int Y_DIM = 8;
const int X_DIM = 9;
void initializeArray() {
    char map[Y_DIM][X_DIM]={'*'};
    for (int row = 0; row < Y_DIM; row++)
    {
        for (int col = 0; col < X_DIM; col++)
        {
            map[row][col]='*';
            cout << map[row][col];
        }
    cout << "\n";   
}
}
int main() {
    initializeArray();
    return 0;
}

输出

*********
*********
*********
*********
*********
*********
*********
*********

Try it on ideone.com