Pointer auf Pointer
-
Hallo, ich habe ein Problem mit einem Pointer auf einen Pointer. Ich möchte über ppers den Inhalt eines Strukturelementes ausgeben. Mein Versuch mit **ppers->vName scheitert mit folgender Fehlermeldung "Fehler: Anfrage nach Element »vName« in etwas, was keine Struktur oder Variante ist
". Ich komme echt nicht mehr weiter und hoffe ihr könnt mir helfen.#include <stdio.h> #include <stdlib.h> typedef struct { char * vName; int alter; } tpers; int main () { tpers * personen; tpers ** ppers; int length = 0; length = sizeof(tpers); personen = malloc(sizeof(tpers)); ppers = malloc(sizeof(tpers)); personen->vName="Greg"; personen->alter=28; ppers = &personen; printf("%d - %s - %d - %p - %p - %p - %s \n", length, personen->vName, personen->alter, personen, ppers, *ppers, **ppers->vName); return 0; }
gruß
gus484
-
Das muss (*ppers)->vName heissen. Du hast doch auch korrekterweise personen->vName und nicht etwa *personen->vName geschrieben. Ein Blick in die Operatorenrangliste hilft hier auch.
ppers = malloc(sizeof(tpers)); /*das sollte wohl besser sizeof(tpers*) heissen (und eigentlich sollte die ganze Zeile entfernt werden, da du hier ein Speicherleck erzeugst...du weist ja kurz darauf dem Zeiger "&personen" zu und nutzt den angeforderten Speicher nie)*/
-
Danke für die Antwort jetzt funktioniert es.