对将字符传递给函数参数时何时使用 int 类型或 char 类型感到困惑?

标签 c pointers character

目前在类里面,我们正在学习 C 语言的指针、地址和 volatile。在一个示例中,我们有以下两个函数,可用于使用 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?

我们认为它与屏蔽有关,并且必须让二进制值脱离字符......虽然我们不确定。

最佳答案

如果将字符类型替换为 char,您将收到相同的结果。 char、int、short 等都是整数类型。编写该函数的人是唯一可以告诉您为什么他们在这种特定情况下选择 int 的人,但您和您的同事是正确的,通常最好使用 char,因为它代表数据的用途。在幕后,该 char 可能最终会被提升为 int,具体取决于平台。

关于对将字符传递给函数参数时何时使用 int 类型或 char 类型感到困惑?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22754021/

相关文章:

c - 如何根据 C 编程语言标准初始化结构体

c - 释放 int 指针到指针数组单独工作正常,但在主程序中崩溃

c - 在 C 中转置矩阵

C 字符指针

c - 以特定方式打印出姓名

c - 路径 osx/unix/darwin 中的转义空格,纯 C

c - 我在哪里可以下载 cron 实用程序的源代码?

c - 防止c中的文件中的字符被写出

c++ - 如何将 char* 转换为 char 数组

c - C 中链表的问题