lima-city: Webhosting, Domains und Cloud
1 Pluspunkt 0 Minuspunkte

Wie kann ich ein Struct in einer Funktion erstellen und dann als Rückgabewert zurückgeben?

#include <stdio.h>
#include <string.h>

struct Person {
    char name[50];
    int alter;
};

struct Person *test() {
    struct Person person;
    strcpy(person.name, "Jango");
    person.alter = 8;
    return person;
}

int main() {
    
    Person person = test();
    // Zugriff auf die Werte des structs
    printf("Name: %s\n", person.name);
    printf("Alter: %d\n", person.alter);

    return 0;
}
von  

1 Antwort

0 Pluspunkte 0 Minuspunkte

Die Funktion test() gibt einen Zeiger auf die lokale Variable person, die innerhalb der Funktion deklariert wurde, zurück. Sobald die Funktion test() beendet ist, wird die lokale Variable person ungültig,

Stattdessen solltest du die Struktur selbst zurückgeben, keinen Zeiger.

struct Person person = test();
von (717 Punkte)  
Diese Community basiert auf dem Prinzip der Selbstregulierung. Beiträge werden von Nutzern erstellt, bewertet und verbessert – ganz ohne zentrale Moderation.

Wer hilfreiche Fragen stellt oder gute Antworten gibt, sammelt Punkte. Mit steigender Punktzahl erhalten Mitglieder automatisch mehr Rechte, zum Beispiel

  • Kommentare verfassen
  • Beiträge bewerten
  • Inhalte bearbeiten
  • Inhalte ausblenden

So entsteht eine Plattform, auf der sich Qualität durchsetzt – getragen von einer engagierten Gemeinschaft. Unser Ziel: Guter Inhalt. Für alle.

2.3k Fragen

2.8k Antworten

260 Kommentare

13 Nutzer