Pointer auf Struktur mit ** Member
-
Hallo Leute ich habe ein problem mit der Übergabe einer Struktur, bzw. der derefferenzierung.
Folgendes Bspl:
typedef struct{ char** list; int zeilen; int laenge; int status; }TEST; void foo1(TEST *ptr, int zeilen, int laenge){ //wie spreche ich list richtig an?? ptr->list=malloc(sizof(ptr->list)*zeilen); //Falsch.... aber wie?? //wäre es: void foo1(char **test, int zeilen, int laenge){ test=malloc(sizeof(*ptr)*zeilen; //fehlerüberprüfung for(x=0; x<zeilen; x++){ ptr[x]=malloc(laenge); }
stehe jetzt auf der Leitung
-
Wie kommst du da drauf, dass Zeile 13 falsch wäre? Genau genommen muss es
ptr->list=malloc(sizof(*ptr->list)*zeilen);
heißen, sollte aber hier keinen Unterschied machen.
Was ich als grundlegend falsch ansehen würde ist das Design mit einem Doppelzeiger, wenn du (der Funktionssignatur nach) anscheinend ein 2D-Array haben möchtest. Das ist eine unnötige Indirektion.
-
Kam darauf weil mein Programm sofort abgestürzt ist, und ich den Fehler dort vermutete. Der Fehler war aber ein anderer... peinlich:
main.c
TEST *ls1=NULL; // da ist der Hund begraben muss //TEST *ls1; foo1(ls1, 5, 10);
Was ich als grundlegend falsch ansehen würde ist das Design mit einem Doppelzeiger, wenn du (der Funktionssignatur nach) anscheinend ein 2D-Array haben möchtest. Das ist eine unnötige Indirektion.
Gebe Dir vollkommen recht, aber das ganze fällt unter "Jugend Forscht"