STM32二维数组出错问题 初学者,在使用OLED想建立一个游戏时,刚开始就出了问题。

STM32二维数组出错问题初学者,在使用OLED想建立一个游戏时,刚开始就出了问题。在gane.h中定义了一个二维数组:unsignedcharT_image[4][6]... STM32二维数组出错问题
初学者,在使用OLED想建立一个游戏时,刚开始就出了问题。
在 gane.h 中定义了一个二维数组:

unsigned char T_image[4][6]={
{0,1,0,1,1,1},
{ 1,0,1,1,1,0},
{1,1,1,0,1,0},
{0,1,1,1,0,1}};

在game.c文件中定义了 1:void Position_change(struct POSITION pos,unsigned char ch[]);,这个函数又调用了:2:Draw_position(pos,&ch[]);函数,而2函数内有一个对二维数组的for循环;在main.c中调用:3:Position_change(pos,T_image);结构体pos中有一个M项。
本意是想利用for循环,一个一个检测T_image[M][i]中的数是否成立,可是,错得很离谱。
For循环直接写成4: (这个循环在2 中)
for(i=0;i<M;i++)
for(n=0;n<6;n++)
If(ch[i][n]==1) //可是这儿老提示不对,该怎么写?在ch前加&也不对
...;
Else
...;
其他地方提示过: error: #29: expected an expression,包括在2 中写ch[],&ch[],改成ch倒对了
error: #167: argument of type "const unsigned char (*)[4][6]" is incompatible with parameter of type "unsigned char *" 可是加上&号 &T_image错误,写成T_image[i]又显示重定义,
求指教,这种二维数组的引用该怎么写。以前弄字符不好弄得直接改为一维数组了,没仔细研究过数组。谢谢。
如:1 中的括号内的ch[] 应该写成unsigned char ch[] 还是(unsigned char*)ch[] ,或是其他什么样,写成这样后,2 中的应该写成什么样,然后for循环应该在iF那儿写成啥,最后的main函数内的那个函数怎么调用T_image[]数组,谢谢。
问题解决了,就是在定义时定义为列向量等于要传递的二维数组的列向量就好了,如1中将数组改一下:void Position_change(struct POSITION pos,unsigned char ch[][6]),2中也改一下1:Draw_position(pos,ch),3和4不变就好了
展开
 我来答
赢皮大8
2016-10-01 · TA获得超过889个赞
知道小有建树答主
回答量:991
采纳率:75%
帮助的人:512万
展开全部
首先不建议你在 .h文件中定义变量,最好是将unsigned char T_image[4][6]={。。。};的定义移到game.c中,在game.h中留个声明 extern unsigned char T_image[][6];的声明

函数1中的ch 你用unsigned char ch[]还是unsigned char *ch都差不多,无所谓。
函数2中你的ch应该是个二维指针 ,因此应该将定义改为Draw_position(pos,unsigned char **ch);
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式