在 C 中的指针上使用 []?

Using [] on pointers in C?

现在我正在查看一些 C 代码,它们有一些我感到困惑的指针语法。所以首先他们声明了一个指针,如下所示:

int32_t *p_tx_buf=NULL; 

后来他们写道:

p_tx_buf = malloc(...math... );

中间的内容只是计算文件大小的数学运算,我认为它并不重要。之后,他们写道:

p_tx_buf[0] = 0

我对 [] 很困惑。它如何与整数指针一起使用?我以为 [] 是用来索引东西的,所以我对如何将它与指针一起使用感到困惑。

p_tx_buf[0] = 0 表示将 0 分配给位置 p_tx_buf + 0.

在 C(以及 C++)中,array[n] 等同于 *(array+n)。它们的含义完全相同,产生的结果也完全相同。

只是对已经提供的答案进行一些阐述,您所指的 "math" 可能不是在计算 单个 文件的大小,而是将文件的大小乘以某个整数。

结果是为几个 文件结构分配了足够的space。指针最终指向内存中顺序排列的几个文件结构中的第一个。索引 [0] 表示指向这些文件结构中的第一个(即 offset 为 0)

我假设的 malloc 命令是 sizeof(int32_t)

的一些乘法

说:

p_tx_buf = malloc(2*sizeof(int32_t));

您现在已经为 2 int32_t 个变量分配了足够的内存 space,您可以通过以下方式访问它们:

*(p_tx_buf) and *(p_tx_buf+1)

p_tx_buf[0] and p_tx_buf[1]