0
点赞
收藏
分享

微信扫一扫

p[i] == (*p)[i]

在C语言中,指针和数组的语法规则允许我们以多种方式表达相同的概念。对于一个指向数组的指针 p,p[i] 和 (*p)[i] 实际上是等价的,但它们在语法上有一些细微的差别。

p[i] 的解释

当你写 p[i] 时,C语言的语法规则会将这个表达式解释为 *((p) + i)。这里的 p 是一个指针,p[i] 表示从指针 p 指向的数组的起始位置开始,向后偏移 i 个单位的位置。这里的单位是指针指向的数组的元素的大小。

( * p)[i] 的解释

表达式 (*p)[i] 也可以访问相同的元素,但它的语法结构略有不同。这里,*p 首先解引用指针 p,得到它指向的数组,然后 [ ] 操作符用来访问这个数组的第 i 个元素。

为什么通常使用 p[i] 而不是 ( * p)[i]

简洁性:p[i] 更加简洁,易于阅读和理解。 一致性:在C语言中,数组的索引操作符 [] 可以直接应用于指针,这是C语言的一个特性,使得代码更加直观。 性能:在某些编译器优化中,p[i] 可能比 (*p)[i] 更高效,因为它直接访问内存,而不需要额外的解引用操作。

举报

相关推荐

0 条评论