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不变就好了 展开
初学者,在使用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不变就好了 展开
展开全部
首先不建议你在 .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);
函数1中的ch 你用unsigned char ch[]还是unsigned char *ch都差不多,无所谓。
函数2中你的ch应该是个二维指针 ,因此应该将定义改为Draw_position(pos,unsigned char **ch);
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询