C中是否允许负数组索引?我只是在读一些代码,发现那个人正在使用arr[-2]对象之前的第二个元素。arr,就像这样:|a|b|c|d|e|f|g|
^------------ arr[0]
^---------- arr[1]
^---------------- arr[-2]这是允许的吗?我知道arr[x]是相同的*(arr + x)..所以arr[-2]是*(arr - 2),这似乎没问题。你认为如何?
3 回答
守着星空守着你
TA贡献1799条经验 获得超8个赞
下标算子[]的definition是E1[E2]与(*(E1)+(E2)完全相同。
DIEA
TA贡献1820条经验 获得超2个赞
arr
int arr[10];int x = arr[-2]; // invalid; out of range
int arr[10];int* p = &arr[2];int x = p[-2]; // valid: accesses arr[0]
- 3 回答
- 0 关注
- 695 浏览
添加回答
举报
0/150
提交
取消