2014-03-31 93 views
0

目前在課上,我們正在學習有關C的指針,地址和volatile。在一個示例中,我們有以下兩個函數可用於使用Altera DE2板在VGA顯示器上繪製字符。將字符傳遞給函數參數時何時使用int類型或char類型感到困惑?

對於下面的代碼,使用了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用在這裏?

我們認爲它與掩蔽有關,必須從字符中獲取二進制值......雖然我們不確定。

回答

3

如果用char替換字符的類型,您會收到相同的結果。 char,int,short等都是整型。編寫該函數的人將是唯一可以告訴你爲什麼他們在這種特定情況下選擇int的人,但是您和您的同事是正確的,因此通常最好使用char來表示數據的目的。在引擎蓋下,取決於平臺,該char可能最終被提升爲int。

相關問題