Zuweisung Strukturen [C]

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Zuweisung Strukturen [C]

    Hallo,

    was passiert eigentlich wenn ich zwei Strukturen in C habe und die eine der anderen zuweise. Also ich habe Struktur X und eine Struktur Y, und schreibe

    X = Y;

    gibts da irgendwelche unterschiede bei der Überweisung, irgendetwas was ich beachten muss ? Wird da intern eigentlich nur die Adresse von Y and die Adresse von X übergeben oder finden da tatsächlich Wertzuweisungen statt intern.
  • du könntest es einfach testen ;)
    wenn du wie oben als Beispiel X = Y machst, probier danach dann einfach mal ein element von X zu ändern und schau dir dann an, wie das jeweilige element in Y und X aussieht. Ist in Y das alte, wurde die Struktur offensichtlich in X rüberkopiert. Ist in Y aber der neue Wert des Elements, dann warens wohl nur Pointer.

    Aber prinzipiell ist es in C so, dass nur variablen die explizit Pointer sind, auch wirklich Pointer sind (komischer Satz ;)).
    Wenn du nen Strukturtyp mit Namen strukt hast und du definierst ne Variable:

    Quellcode

    1. strukt X;

    Dann reserviert er im Stack nen Speicherbereich für die Struktur und X kannst du dann letztendlich auch nicht mehr ändern. Wenn du dann dem X ne andere Strukturinstanz Y zuweist kopiert er einfach nur den kompletten Inhalt in den Speicherbereich von X. Der Speicherbereich wird dann auch erst wieder frei, wenn du den aktuellen Scope verlässt und der Stack wieder reduziert wird. Solange das Zeug auf dem Stack liegt braucht man auch keinen Garbage Collector (dens ja eh nicht gibt), da der da eh nichts machen würde. Das Problem mit nicht wieder freigegebenen Speicherbereich gibts nur im Heap, aber auf Elemente die dort abgelegt sind greift man ausschließlich mit Zeigern zu.