2015-02-07 29 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