【发布时间】:2014-03-31 05:12:09
【问题描述】:
目前在课堂上,我们正在学习 C 的指针、地址和易失性。在一个示例中,我们有以下两个函数,可用于使用 Altera DE2 板将字符绘制到 VGA 监视器上。
对于以下代码,使用了 int 字符,但我的同行和我认为它应该是 char 字符,因为我们将一个字符传递给函数参数。
void drawChar( int x, int y, int character )
{
volatile unsigned char *pChar;
pChar = getCharAddr(x,y);
*pChar = ( character & 0x7f );
}
unsigned char *getCharAddr( int x, int y )
{
y = max(0,min(MAX_Y_CHARS-1,y));
x = max(0,min(MAX_X_CHARS-1,x));
return (unsigned char *)(ADDR_CHARBUF + (((y<<MAX_X_CHAR_BITS)|(x))<<0));
}
这里是使用函数drawChar的示例代码:
drawChar( x, y, ‘D’ ); // draws ‘D’ at <x,y>!
谁能解释这里为什么使用 int ?
我们认为这与掩码有关,并且必须使二进制值脱离字符...虽然我们不确定。
【问题讨论】: