Saya tahu pertanyaannya telah terjawab, tetapi saya tidak dapat menahan diri untuk tidak membagikan penjelasan ini.
Saya ingat Prinsip desain Kompiler, Mari kita asumsikan a adalah larik int dan ukuran int adalah 2, & Alamat dasar untuk a adalah 1000.
Bagaimana a[5]bekerja ->
Base Address of your Array a + (index of array *size of(data type for array a))
Base Address of your Array a + (5*size of(data type for array a))
i.e. 1000 + (5*2) = 1010
Penjelasan ini juga menjadi alasan mengapa indeks negatif dalam array bekerja di C.
yaitu jika saya mengaksesnya a[-5]akan memberi saya
Base Address of your Array a + (index of array *size of(data type for array a))
Base Address of your Array a + (-5 * size of(data type for array a))
i.e. 1000 + (-5*2) = 990
Ini akan mengembalikan saya objek di lokasi 990. Dengan logika ini kita dapat mengakses indeks negatif di Array di C.
somearray-2yang tidak ditentukan kecuali hasilnya berada dalam kisaran dari awalsomearrayhingga 1 setelah akhirnya.