Yahoo Clever wird am 4. Mai 2021 (Eastern Time, Zeitzone US-Ostküste) eingestellt. Ab dem 20. April 2021 (Eastern Time) ist die Website von Yahoo Clever nur noch im reinen Lesemodus verfügbar. Andere Yahoo Produkte oder Dienste oder Ihr Yahoo Account sind von diesen Änderungen nicht betroffen. Auf dieser Hilfeseite finden Sie weitere Informationen zur Einstellung von Yahoo Clever und dazu, wie Sie Ihre Daten herunterladen.

C: Arrays in Struktur einbetten?

Folgendes Problem:

Ich habe ich will eine Struktur voller Daten und einem Array von Server zu Client schicken, allerdings muss ich dürfen die verschickten Daten keine Zeiger enthalten, da es sonst auf dem anderen PC krachen würde.

Deswegen folgende Frage:

Sind Arrays in einer Struktur im Speicher auch wirklich da wo die Struktur ist oder irgendwo anders?

Wenn nicht, wie kann ich die Arrays an die Struktur dran kleben, sodass ich das ganze in einem Rutsch zum Client senden kann?

2 Antworten

Bewertung
  • vor 1 Jahrzehnt
    Beste Antwort

    Solange es um C oder C++ geht, ist es grundsätzlich kein Problem.

    // Enthält keine Referenzen und kann verschickt werden

    struct SimpleStruct {

    int someField;

    double values1[100];

    byte buffer[100];

    };

    Man muss aber folgende Punkte beachten:

    - Es wird schwierig sein ein Array von Strings zu verschicken, da in C/C++ ein String nichts anderes als ein Pointer ist.

    - Es darf nur das Array variable Länge haben, das an der letzten Stelle in der Struktur definiert wurde. Beispiel:

    struct MyStruct {

    int countOfElements; // Länge vom Array 'elements'

    int elements[1]; // variable Länge

    };

    Die Länge der Struktur in diesem Fall kann durch folgendes Macro ermittelt werden:

    #define MY_STRUCT_SIZE(s) (sizeof(*(s)) + (sizeof((s)->elements[0]) * ((s)->countOfElements - 1)))

    Bei der Allokation vom Speicher muss man auch entsprechend aufpassen. Man muss immer 'malloc' benutzen und die gewünschten Länge ausrechnen.

  • vor 1 Jahrzehnt

    Also, die Frage habe ich nun leider nur halb verstanden aber ich probiere mal wenigstens nen Lösungsansatz zu liefern, hoffe das hilft dir weiter o.o

    Array bezeichnet bloss eine Art Liste, sprich ein Objekt welches beliebig viele Inhalte innerhalb verschiedener Spalten sichern kann.

    Sobald du Zeiger hinzufügst ist es nicht mehr wirklich ein Array, sondern eine verkettete Liste, wo der Vorgänger immer weiter auf den Nachfolger zeigt, bis das Ende erreicht wird.

    Ein Array sollte recht einfach übertragen werden können und solltest du dir doch unsicher sein, erstelle doch einfach ein neues Objekt und gib ihm Array und Co. als Attribute mit auf den Weg zum Client(?).

    Beachtet werden muss allerdings (egal wie du es am Ende realisierst), dass der Empfänger die Daten und das Array auch verwenden kann. Hierzu muss Client oder Empfänger selbst wissen, was und wo im Array welche Informationen gespeichert sind!!!

    Array(0) --> Start mit der Information x

    Array(1) --> 2. Information mit Inhalt y

    Array(n) --> n. Information mit Inhalt z

    Der erfolgreiche Transfer zwischen Server und Client ist sonst nämlich absolut nutzlos =/

Haben Sie noch Fragen? Jetzt beantworten lassen.