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個贊
下標算子[]的de?nition是E1[E2]與(*(E1)+(E2)完全相同。

DIEA
TA貢獻1820條經驗 獲得超3個贊
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 關注
- 733 瀏覽
添加回答
舉報
0/150
提交
取消