微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 一个不常见的C语言语句

一个不常见的C语言语句

时间:10-02 整理:3721RD 点击:
最近再看别人写的程序,有一个个函数是这样写的:
/**********************************************************
  写汉字子函数
**********************************************************/
void ChineseChar(uint x,uint y,int size,uint For_color,uint Bk_color ,char c)
{
   int e=0,i,j;
   int  ed;
   uint  ncols;
   uint  nrows;
   uint  nbytes;
   uchar *pfont;
   uchar *pchar;
   uchar *fonttable[]={(uchar *)hz16,(uchar *)hz24 , (uchar *)hz32};
   pfont=(uchar *)fonttable[size];
   if(size==0)
   {
     ncols =16-1;
     nrows =16-1;
     nbytes =32;         //每个字取模的字节数=(16*16)/8
   }
   else
   if(size==1)
   {
     ncols =24-1;
     nrows =24-1;
     nbytes =72;  //每个字取模的字节数=(24*24)/8
   }
   else
   if(size==2)
   {
     ncols =32-1;
     nrows =32-1;
     nbytes =132;   //每个字取模的字节数=(32*32)/8
   }
   pchar=pfont + (nbytes*(c-1));
   Address_set(x,  y, x+nrows,y+ncols);
   for(i=0;i<nbytes;i++)
   {
     ed=*pchar++;
         if(size==0)
         {
       if(i%2==0)
       e=8;
       else
       e=4;
         }
         else
         e=8;
     for(j=0;j<e;j++)
     {
          if((ed>>j)&0x01)
      {
           LCD_Write_DATA(For_color>>8 , For_color  );  //textcolor
          }
     else
     {
       LCD_Write_DATA( Bk_color>>8 ,  Bk_color);  //backcolor
         }
        }
  }
}
上面的红色字体的两个语句表示什么意思呢?求指导。其中hz16,hz24 ,hz32在别的地方定义为
const unsigned char  hz16[]={0x00,0x10,...此处省略很多字};
const unsigned char  hz24[]={0x00,0x10,...此处省略很多字};
const unsigned char  hz32[]={0x00,0x10,...此处省略很多字};
大家讨论讨论。

uchar *fonttable[]={(uchar *)hz16,(uchar *)hz24 , (uchar *)hz32};
这里应该是创建了一个字库组合,用来方便调用,hz16[]等这几个数组应该是用来存放刚读出的字模用的
(uchar *)//这个是做字符类型限制,下面的一样
pfont=(uchar *)fonttable[size];
这里是做了个size判断,是否为16*16、24*24、32*32的屏,具体看传参
从上面上段程序看,这个应该是个LED点阵屏控制板,支持两种或三种颜色,而且支持16*16、24*24、32*32屏

自己建的字库

谢谢解答,但是这种+*号的数组是什么用法?是指针数组?小弟以前没用过这种表达?求解释

请学习一下指针章节,会有答案的。

高端 不懂!

uchar *fonttable[]={(uchar *)hz16,(uchar *)hz24 , (uchar *)hz32};
前面的变量定义是的uchar*型,后面赋值的(uchar *)是将数组名的地址强行转换为uchar*型

指针看着就晕

uchar *fonttable[]={(uchar *)hz16,(uchar *)hz24 , (uchar *)hz32};
(uchar *)为强制类型转换,该数组是指针型数组,元素为这3个字库的地址;
pfont=(uchar *)fonttable[size];
pfont的值(字库地址),由size的值来确定是那个字库地址

表示以后会超越

遇c头就大

顶                                                                                                                  

果断看不懂什么意思

谢谢分享谢谢分享谢谢分享
      谢谢分享谢谢分享                       谢谢分享
      谢谢分享谢谢分享                谢谢分享         
            谢谢分享              谢谢分享谢谢分享谢谢分享
            谢谢分享              谢谢分享        谢                谢
            谢谢分享              谢谢分享        谢                谢
            谢谢分享              谢谢分享        分                分
            谢谢分享              谢谢分享        享                享
            谢谢分享              谢谢分享        谢                谢
            谢谢分享              谢谢分享        谢                谢
谢        谢谢分享               谢谢分享       分                分
谢谢     谢谢分享              谢谢分享        享                享
谢谢分 谢谢分享              谢谢分享        谢                谢
谢谢分 谢谢分享                               谢       谢
谢谢分谢谢分享                         谢                 谢
        谢谢谢谢                    分                               分
            谢谢                   享                                     享

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top