我正在尝试初始化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* *@******
答案 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;
}
输出
*********
*********
*********
*********
*********
*********
*********
*********