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

Initialize 2D Array with characters c++

本文关键字:2D 数组 初始化 c++ 字符      更新时间:2023-10-16

我正在尝试初始化一个 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* *@******

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

而不是:

 cout << map[row][col];

你想要:

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

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

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

我会

做什么:

#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;
}

输出

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

试穿 ideone.com