开发者社区> 问答> 正文

C中是否允许使用负数组索引?

我只是在阅读一些代码,发现该人正在使用arr[-2]来访问之前的2nd元素arr,如下所示:

|a|b|c|d|e|f|g| ^------------ arr[0] ^---------- arr[1] ^---------------- arr[-2] 可以吗

我知道那arr[x]和*(arr + x)。那么arr[-2]是*(arr - 2),这似乎确定。你怎么看? 问题来源于stack overflow

展开
收起
保持可爱mmm 2020-02-08 10:47:44 467 0
1 条回答
写回答
取消 提交回答
  • 那是对的。根据C99§6.5.2.1/ 2:

    下标运算符[]的定义是E1 [E2]与(*((E1)+(E2)))相同。

    没有魔术。这是1-1的当量。与往常一样,在取消引用指针(*)时,您需要确保它指向的是有效地址。

    2020-02-08 10:47:54
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载