【问题标题】:Using pointer as an array - C使用指针作为数组 - C
【发布时间】:2015-04-07 09:53:59
【问题描述】:

我在 C 代码中找到 this page:

uint16_t* terminal_buffer; 

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

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

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

【问题讨论】:

  • 我建议您在尝试内核开发之前学习该语言的基础知识。
  • 感谢有用的回答...@remyabel
  • @pruky,当您问uint16_t* terminal_buffer; 是否与uint16_t *terminal_buffer; 相同时,您清楚地表明您对语言基础知识缺乏了解。如果没有很好地理解语言的基础知识,很可能您在回答您的问题时得到的任何答案都很难理解。

标签: c arrays pointers types osdev


【解决方案1】:

这是什么意思?和uint16_t *terminal_buffer;一样吗?

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

变量 terminal_buffer 像数组一样被访问:

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

因为这相当于

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

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

【讨论】:

  • 我认为里面应该有括号。
  • @remyabel 不,他们不需要。
  • @iharob 谢谢,现在我明白了。
猜你喜欢
  • 1970-01-01
  • 2017-02-05
  • 2011-05-24
  • 2023-04-04
  • 1970-01-01
  • 2017-11-06
  • 2021-07-03
  • 2011-06-04
  • 2011-05-10
相关资源
最近更新 更多