C, dinamik olarak aşağıdaki kodu kullanarak yığın üzerinde iki boyutlu bir dizi ayırabilirsiniz biliyorum:
int** someNumbers = malloc(arrayRows*sizeof(int*));
for (i = 0; i < arrayRows; i++) {
someNumbers[i] = malloc(arrayColumns*sizeof(int));
}
Açıkçası, bu aslında bir dizi ayrı tek boyutlu tamsayı dizisine tek boyutlu bir işaretçi dizisi oluşturur ve "Sistem" istediğimde ne demek istediğimi anlayabilir:
someNumbers[4][2];
Ama statik olarak aşağıdaki satırda olduğu gibi bir 2D dizi bildirdiğinizde ...:
int someNumbers[ARRAY_ROWS][ARRAY_COLUMNS];
... yığın üzerinde benzer bir yapı oluşturuluyor mu yoksa tamamen başka bir formda mı? (yani 1D işaretçiler dizisi mi? Değilse, nedir ve referanslar nasıl anlaşılır?)
Ayrıca, "Sistem" dediğimde, bunu anlamaktan aslında ne sorumlu? Çekirdek mi? Yoksa C derleyicisi derlerken bunu çözer mi?
malloc()
N-boyutlu bir diziye neden olmaz. . Tek boyutlu dizileri tamamen ayırmak için işaretçi dizileri [işaretçi dizileri [...]] ile sonuçlanır . Bkz doğru çok-boyutlu diziler tahsis ayırmaya görmek için DOĞRU , N-boyutlu bir dizi.