使用指针作为数组 - C

Using pointer as an array - C

我在 this page 的 C 代码中找到:

uint16_t* terminal_buffer; 

这是什么意思?和uint16_t *terminal_buffer;一样吗? 比变量 terminal_buffer 像数组一样访问:

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

有人可以向我解释一下它是如何工作的吗? 谢谢

What does it mean? Is it the same as uint16_t *terminal_buffer;?

是的,如果 * 位于类型名称和变量名称之间,则它的位置无关紧要,因此您可以根据需要编写 uint16_t * terminal_buffer;,因为空格会被忽略。

Than variable terminal_buffer is accesed like an array:

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

因为这相当于

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

所以它基本上是一个指针算术运算和一个解引用。