我刚刚读了一些代码,发现这个人正在使用arr[-2]
访问之前的第二个元素arr
,像这样:
|a|b|c|d|e|f|g|
^------------ arr[0]
^---------- arr[1]
^---------------- arr[-2]
这是允许的吗?
我知道arr[x]
是相同的*(arr + x)
. So arr[-2]
is *(arr - 2)
,这看起来不错。你怎么认为?
那是对的。从 C99 §6.5.2.1/2 开始:
下标的定义
运算符 [] 是 E1[E2] 是
与 (*((E1)+(E2))) 相同。
没有魔法。这是 1-1 的等价。与往常一样,在取消引用指针 (*) 时,您需要确保它指向有效的地址。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)