开发者社区 问答 正文

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 478 分享
分享
版权
举报
1 条回答
写回答
取消 提交回答
  • 那是对的。根据C99§6.5.2.1/ 2:

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

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

    2020-02-08 10:47:54 举报
    赞同 评论

    评论

    全部评论 (0)

    登录后可评论
问答分类:
问答地址:
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等