前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何给结构体内声明的二维数组赋值

如何给结构体内声明的二维数组赋值

作者头像
英雄爱吃土豆片
发布2020-10-29 10:52:29
2.5K0
发布2020-10-29 10:52:29
举报
文章被收录于专栏:英雄爱吃土豆片

最近在用C++做一个象棋小游戏,为了规避全局变量的使用,想使用结构体来声明需要使用的数据。给其中用来存储棋盘信息的二维数组赋值时却遇到了问题:

在结构体内是不能进行数据初始化的,而在函数中(假设我定义了一个结构体d),也不能使用d.map[2][3] = {{,,,},{,,,}};这样的方法给结构体内的数组赋值,因为编译器会报这样的错误:错误error C2440: “=”: 无法从“initializer-list”转换为“int” 。

所以就得另想办法给这个数组赋值了。我最后使用了个笨办法:用循环来完成的:先在函数中定义并初始化另一个和你需要使用的数组同行同列的数组,之后使用循环将新定义的数组的值依次赋值给结构体内的数组。

用这种方法可以较方便的给结构体内的数组赋值,而不是使用d.map[0][0] = …;这种方法一个一个的赋值(我差点就这样做了)。下面是我使用到的函数代码:

代码语言:javascript
复制
void Mouse::InitMap() {
	struct Data d;
	int mapdata[10][9] =
	{ { 'C', 'H', 'E', 'M', 'B', 'M', 'E', 'H', 'C' },
	{ 0, 0, 0, 0, 0, 0, 0, 0, 0 },
	{ 0, 'G', 0, 0, 0, 0, 0, 'G', 0 },
	{ 'P', 0, 'P', 0, 'P', 0, 'P', 0, 'P' },
	{ 0, 0, 0, 0, 0, 0, 0, 0, 0 },
	{ 0, 0, 0, 0, 0, 0, 0, 0, 0 },
	{ 'p', 0, 'p', 0, 'p', 0, 'p', 0, 'p' },
	{ 0, 'g', 0, 0, 0, 0, 0, 'g', 0 },
	{ 0, 0, 0, 0, 0, 0, 0, 0, 0 },
	{ 'c', 'h', 'e', 'm', 'b', 'm', 'e', 'h', 'c' } };

	for (int i = 0; i < 10; i++) {
		for (int j = 0; j < 9; j++) {
			d.map[i][j] = mapdata[i][j];
		}
	}
	PutChess(d);
}

希望对遇到类似问题的同学能有所帮助。也祝自己赶快完成这个小项目。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/04/02 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档