Puteți face acest lucru cu orice tip de date. Pur și simplu face-o un pointer-la-pointer:
typedef struct {
int myint;
char* mystring;
} data;
data** array;
Dar nu uitați că încă trebuie să malloc variabila, și se face un pic mai complex:
//initialize
int x,y,w,h;
w = 10; //width of array
h = 20; //height of array
//malloc the 'y' dimension
array = malloc(sizeof(data*) * h);
//iterate over 'y' dimension
for(y=0;y
Codul de alocare a structurii arată similar - nu uitați să sunați gratuit() pe tot ce ați mallocat! (De asemenea, în aplicații robuste, trebuie să să verificați returnarea malloc() .)
Acum, să presupunem că doriți să transmiteți această funcție unei funcții. Puteți utiliza în continuare pointerul dublu, deoarece probabil că doriți să faceți manipulări pe structura de date, nu pe pointer la indicii structurilor de date:
int whatsMyInt(data** arrayPtr, int x, int y){
return arrayPtr[y][x].myint;
}
Apelați această funcție cu:
printf("My int is %d.\n", whatsMyInt(array, 2, 4));
ieşire:
My int is 6.