Funktion mit Zeichenkette als output



  • Hey, ich muss eine Funktion schreiben die als Rückgabe eine Zeichenkette hat also z.B. "wahr".
    Wie sieht dabei der Rückgabe Datentyp aus im Funktionskopf?
    char* ?



  • Da kannst es als char* schreiben. Aber dann musst du sicherstellen, dass der Speicherbereich für die Zeichenkette nicht innerhalb der Funktion angelegt wird, da dieser temporäre Bereich nach verlassen der Funktion wieder freigegeben wird.

    Allerdings ist es möglich, den Speicher mit malloc() in der Funktion anzulegen. Dann kannst du den Zeiger auf den Speicher zurückgeben. Allerdings solltest du dann auch diesen mit free() wieder freigeben, wenn du das Ergebnis nicht mehr brauchst.

    Eine andere Variante wäre noch, vor Aufrufen der Funktion den Speicher anzulegen und der Funktion den Zeiger auf diesen Bereich zu übergeben. Innerhalb der Funktion musst du dann beachten, nicht über die Größe diese Bereichs hinaus zu schreiben. Dabei ist es wiederum egal, ob die Funktion den Zeiger wieder zurück gibt, da dieser ja schon außerhalb bekannt ist.



  • Nimm char* oder besser noch const char*.
    Speicherallozierung brauchst du nicht, über Stringliterale kannst du das den Compiler machen lassen:

    const char *blafasel()
    {
      if(1)
        return "wahr";
      else
        return "falsch";
    }
    

Anmelden zum Antworten