Flexible Felder in C
-
Hallo,
Hab da eine Frage zu Dyn. Datenstrukt. in C:
gibt es da so etwas wie flexible (dynamische) Felder?!
Wenn ja wie deklariere ich die am besten. wenn nein wisst ihr
vielleicht eine äquivalente Struktur hab über eine Liste von dynamischen
Arrays nachgedacht. ist aber doch ziemlich unschön.vielen Dank
der_Konrad
zweite ordnung muß sein
-
Hallo,
das hier war nicht hilfreich
-
Hallo hab die dynamischen Listen jetzt doch gefunden.
für alle die die es auch interessiert hier mein testcodeso long
der_Konrad
zweite ordnung muß sein
typedef struct { int spalten; int zeilen; int **matrix; } a_matrix; void main(int argc, char *argv[]){ int i; int j; a_matrix A; A.spalten = 4; A.zeilen = 4; A.matrix = (int**) malloc(A.spalten*sizeof(int)); // Allocate row pointers for (i = 0; i < A.spalten; i++){ A.matrix[i] = (int*) malloc(A.zeilen*sizeof(int));; // Allocate rows } for (i = 0; i < A.spalten; i++){ for (j = 0; j < A.zeilen; j++){ A.matrix[i][j] = i *j; } } // just a little test for (i = 0; i < A.spalten; i++){ for (j = 0; j < A.zeilen; j++){ printf("%d ", A.matrix[i][j]); } printf(" \n"); } for (i = A.spalten-1; i >= 0; i--){ free(A.matrix[i]); // Deallocate rows } free(A.matrix); // Deallocate row pointers }
-
ich finds auch immer ganz praktisch eine matrix wie folgt zu erstellen, mal ein schnell eingehackter source, praktisch finde ich es deshalb wegen den aufrufen von free
aber das nur nebenbei
int main(void) { int z,s,i,j,data_size; z=s=3; data_size = z*s; double **p_2d = malloc(sizeof(*p_2d)*z); double *data_2d = malloc(sizeof(*data_2d)*data_size); for(i=0,j=0; j < (data_size) ; j+=z,i++) p_2d[i] = &data_2d[j]; free(data_2d); free(p_2d); return 0; }