Ako podjemo od toga da je
Code:
polje[i][j] = *(*(polje + i) + j);
onda dvodimenziono polje pravish sa
Code:
int** polje = NULL;
int X = 10, Y = 5;// dimenzije polja
for (x = 0; x < X; x++)
*(polje + x) = (int*)malloc(Y * sizeof(int));
a menjash velichinu po Y sa
Code:
int newY = 15;// nova velichina za Y
for (x = 0; x < X; x++)
{
int* res = (int*)realloc(*(polje + x), newY * sizeof(int));
if (res == NULL)
exit(EXIT_FAILURE);// nema vishe memorije
*(polje + x) = res;
}
Petlje se kreccu po dimenziji
X. Svako
Code:
*(polje + x)
dereferencira dimenziju
X tj. omoguccava da dodavanjem broja na tu vrednost se "pomerash" po dimenziji
Y. Josh jedno dereferenciranje
Code:
*(*(polje + x) + y)
daje vrednost sadrzzanu u polju, tj. kao da si nizu uradio
Code:
polje[x][y]
Nisam probao kod ali nadam se da je jasno shta sam hteo da kazzem.
Sveti Avgustin: "Dobar hrišćanin treba da se kloni matematičara i svih onih koji daju lažna proročanstva. Postoji opasnost da su matematičari već sklopili pakt sa Đavolom, da pomrače čovekov um i da ga okuju okovima pakla."