在 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]
现在我正在查看一些 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]