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.


Anmelden zum Antworten