Announcement

Collapse
No announcement yet.

Speicherallokation für benutzerdef.Datentypen - Wie Schreiben und Auslesen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Speicherallokation für benutzerdef.Datentypen - Wie Schreiben und Auslesen

    Hall Forum,

    habe Speicher allokiert, um dort die Werte eines Benutzerdefinierten Datentyps abzuspeichern:

    typedef char hunderasse[2];

    also ein Feld zum Speichern 2er Character

    jetze allokiere ich Speicher für 10 Elemente:

    hund = (hunderasse*) malloc(sizeof(hunderasse) * 10);

    Okay, jetzt habe ich einen Zeiger auf Stück Speicher, um 10 Elemente vom Typ hunderasse abzuspeichern - nur wie?

    also
    hund[0] = einzeltier; usw. klappt nicht (einzeltier ist vom Typ Hunderasse),
    da kommt Fehlermeldung "error C2106: '=' : left operand must be l-value"

    Also wie bitte lege ich die Werte von benutzerdefinierten Datentypen (isbes.Arrays) dort ab?

    Danke, michael

  • #2
    du kannst mit memcpy und anderen Speicherbefehlen dort den Speicher bestücken. Das ist umständlich und man muss aufpassen was man tut.

    Arbeite mit einem struct

    struct str_rassen
    {
    char Rasse[2];
    };

    str_rassen myDaten[10];

    Jetzt hast du ein Array (myDaten), welches 10 Elemente vom Typ str_rassen enthält.

    Zuweisen:

    myDaten[0].Rasse="12"
    Christian

    Comment


    • #3
      Muss man bei chars nicht strcpy oder strncpy zur Zuweisung verwenden

      Comment


      • #4
        ja, für chars schon (ist zwar kein Zwang). Aber hier hat er doch einen Zeiger auf einen Speicher von 10 * 2 chars.

        hund = (hunderasse*) malloc(sizeof(hunderasse) * 10);

        Wobei dieser nach char[2] gecastet wird??

        Man kann das auch als

        char [10][2] definieren.

        Halte das mit den struct für einfacher und klare
        Christian

        Comment

        Working...
        X