Çok Boyutlu Diziler (C)

Bir alt simge ifadesinde de aşağıdaki gibi birden fazla alt simge olabilir:

expression1 [ expression2 ] [ expression3 ] /*...*/ ;

Alt simge ifadeleri soldan sağa ilişkilendirilir. En soldaki alt simge ifadesi, expression1[ expression2 ]önce değerlendirilir. İşaretçi ifadesi eklemenin expression1 ve expression2 oluşturmanın sonucu olan adres; sonra expression3 yeni bir işaretçi ifadesi oluşturmak için bu işaretçi ifadesine eklenir ve son alt simge ifadesi eklenene kadar böyle devam eder. Son işaretçi değeri bir dizi türünü ele almadığı sürece, son alt simgeli ifade değerlendirildikten sonra dolaylı işleç (*) uygulanır.

Birden çok alt simge içeren ifadeler "çok boyutlu dizilerin" öğelerine başvurur. Çok boyutlu dizi, öğeleri dizi olan bir dizidir. Örneğin, üç boyutlu bir dizinin ilk öğesi iki boyutlu bir dizidir.

Örnekler

Aşağıdaki örneklerde prop adlı dizi, her biri int değerlerinin 4 ile 6 dizisi olan üç öğeyle bildirilir.

int prop[3][4][6];
int i, *ip, (*ipp)[6];

prop dizisine yapılan başvuru aşağıdaki gibi görünür:

i = prop[0][0][1];

Örnek, öğesinin ikinci tek int öğesine nasıl başvuracaklarını propgösterir. Diziler satıra göre depolanır, bu nedenle en hızlı son alt simge değişir; prop[0][0][2] ifadesi dizinin sonraki (üçüncü) öğesine başvurur ve bu düzen böyle devam eder.

i = prop[2][1][3];

Bu deyim, prop'un öğesine yapılan daha karmaşık bir başvurudur. İfade, aşağıdaki gibi değerlendirilir:

  1. İlk alt simge 2, 4 ile 6 int dizisi ile çarpılır ve prop işaretçi değerine eklenir. Sonuç, üçüncü 4 ile 6 prop'a işaret eder.

  2. İkinci alt simge 1, 6 öğeli int dizisinin boyutuyla çarpılır ve prop[2] tarafından temsil edilen adrese eklenir.

  3. 6 öğeli dizinin her öğesi bir int değerdir, bu nedenle son alt indis, 3'a inteklenmeden önce boyutuyla prop[2][1] çarpılır. Elde edilen işaretçi, 6 öğeli dizinin dördüncü öğesine yöneliktir.

  4. Yöneltme yol işleci işaretçi değerine uygulanır. Sonuç, bu adresteki int öğesidir.

Bu sonraki iki örnek, dolaylı işlecin uygulanmadığı durumları gösterir.

ip = prop[2][1];

ipp = prop[2];

Bu deyimlerin ilkinde ifade prop[2][1] , üç boyutlu diziye propgeçerli bir başvurudur; 6 öğeli bir diziye (daha önce bildirilir) başvurur. İşaretçi değeri bir diziye hitap ettiğinden, dolaylı işleci uygulanmaz.

Benzer şekilde, ikinci prop[2] deyimindeki ipp = prop[2]; ifadesinin sonucu, iki boyutlu diziye yönelik olan bir işaretçi değeridir.

Ayrıca bkz.

Alt Simge İşleci: