Sorunun cevaplandığını biliyorum ama bu açıklamayı paylaşmaya dayanamadım.
Derleyici tasarımının ilkelerini hatırlıyorum, a'nın bir int dizisi olduğunu ve int boyutunun 2 olduğunu ve a için temel adresin 1000 olduğunu varsayalım.
Nasıl a[5]çalışacak ->
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
Bu açıklama aynı zamanda dizilerdeki negatif indekslerin C de çalışmasının sebebidir.
Yani erişirsem a[-5]bana verecek
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
990 konumunda bana nesne döndürecektir. Bu mantıkla C'deki Array'deki negatif indekslere erişebiliriz.
somearray-2, sonuç başlangıcındansomearraysonunu 1 geçen aralıkta olmadığı sürece tanımsızdır .