char数组在结构中定义,如下所示:
struct munchkin_grid_type
{
char grid[5][5];
};
在另一个函数中,一个变量被定义为这个新类型,我希望它里面的char数组被填充:
munchkin_grid_type munchkin_grid;
munchkin_grid.grid[5][5] =
{
{ 'a', 'b', 'c', 'd', 'e' },
{ ' ', ' ', ' ', ' ', ' ' },
{ ' ', ' ', ' ', ' ', ' ' },
{ ' ', ' ', ' ', ' ', ' ' },
{ '1', '2', '3', '4', '5' }
};
我得到的错误是:
错误C2440:' =' :无法转换为初始化列表'到' char'
智能感知:初始化值太多
如何在不使用std :: array / vector类型的情况下将这些值放入此二维数组中?我只想要一个普通的2D字符数组。
答案 0 :(得分:1)
而不是
munchkin_grid_type munchkin_grid;
munchkin_grid.grid[5][5] =
{
{ 'a', 'b', 'c', 'd', 'e' },
{ ' ', ' ', ' ', ' ', ' ' },
{ ' ', ' ', ' ', ' ', ' ' },
{ ' ', ' ', ' ', ' ', ' ' },
{ '1', '2', '3', '4', '5' }
};
DO
munchkin_grid_type munchkin_grid =
{
{
{ 'a', 'b', 'c', 'd', 'e' },
{ ' ', ' ', ' ', ' ', ' ' },
{ ' ', ' ', ' ', ' ', ' ' },
{ ' ', ' ', ' ', ' ', ' ' },
{ '1', '2', '3', '4', '5' }
}
};
编辑 - 正如要求解释其基础。
基本上,这是带有初始化的单个struct named
munchkin_grid`的定义。要理解它,请从括号中解决。
单个数组的char将初始化为
char x[5] = {'a', 'b', 'c', 'd', 'e'};
二维char数组引入了另一个{}
嵌套。
char x[2][5] = {
{'a', 'b', 'c', 'd', 'e'},
{'1', '2', '3', '4', '5'}
};
我已经从您的示例中更改了第一个维度,因为使用5x5时,不太清楚维度的初始化方式。如果交换维度,则初始化程序也需要更改,例如;
char y[5][2] = {
{'a', 'b'},
{'c', 'd'},
{'e', '1'},
{'2', '3'},
{'4', '5'}
};
然后,结构的初始化会增加另一级{}
以获得munchkin_grid
的初始化,如上所述。
答案 1 :(得分:-1)
代码munchkin_grid.grid[5][5] =
正在访问数组的元素(您可能会将语法与其他语言混淆......)删除[5][5]
应该可以解决您的问题。
编辑:以下代码应该有效(至少它没有产生任何IntelliSense错误..)
#include <array>
struct munchkin_grid_type
{
std::array<char, 5> grid[5];
};
munchkin_grid_type munchkin_grid;
munchkin_grid.grid[0] = {'a', 'b', 'c', 'd', 'e' };
munchkin_grid.grid[1] = { ' ', ' ', ' ', ' ', ' ' };
munchkin_grid.grid[2] = { ' ', ' ', ' ', ' ', ' ' };
munchkin_grid.grid[3] = { ' ', ' ', ' ', ' ', ' ' };
munchkin_grid.grid[4] = { '1', '2', '3', '4', '5' };