2015-02-07 46 views
-3

我用C代碼中發現的this page使用指針數組 - Visual C

uint16_t* terminal_buffer; 

是什麼意思?是否與uint16_t *terminal_buffer;相同? 比可變terminal_buffer是accesed像數組:

terminal_buffer[index] = make_vgaentry(' ', terminal_color); 

有人可以解釋我是如何工作的? 謝謝。

+4

我建議你在嘗試內核開發之前學習該語言的基礎知識。 – 2015-02-07 07:13:23

+0

感謝您的有用答案... @remyabel – pruky 2015-02-07 07:14:36

+2

@pruky,當您詢問uint16_t * terminal_buffer;是否與uint16_t * terminal_buffer相同時,您清楚地顯示出您對該語言的基本知識缺乏瞭解。如果沒有對語言的基礎知識有一個很好的理解,很可能你所得到的任何答案都很難理解。 – 2015-02-07 07:18:02

回答

1

這是什麼意思?是否與uint16_t *terminal_buffer;相同?

是的,在*的位置是不相關的,如果它的類型名和變量名之間在所以你可以寫uint16_t * terminal_buffer;,如果你想要的,因爲空間被忽略。

比可變terminal_buffer被accesed像的數組:

terminal_buffer[index] = make_vgaentry(' ', terminal_color); 

因爲這相當於

*(terminal_buffer + index) = make_vgaentry(' ', terminal_color); 

所以它基本上是一個指針運算操作和解除引用。

+0

我認爲那裏應該有括號。 – 2015-02-07 07:15:56

+0

@remyabel在哪裏? – 2015-02-07 07:16:15

+0

*((E1)+(E2)),IIRC。 – 2015-02-07 07:16:33