Warum die mitgliedweise Array-Zuweisung innerhalb von Structs in C und C unterstützt wird
Während die mitgliedweise Zuweisung von Arrays in C und C generell verboten ist, ist dies der Fall wird innerhalb von Strukturen unterstützt. Dieser scheinbare Widerspruch ergibt sich aus der historischen Entwicklung dieser Sprachen.
In Strukturdefinitionen wurden Arrays als bequeme Möglichkeit eingeführt, zusammenhängenden Speicher für Daten zuzuweisen. In den frühen Iterationen von C waren Arrays jedoch lediglich Zeiger auf Speicherbereiche. Das Zuweisen eines Arrays zu einem anderen führte somit zu einer Zeigerzuweisung und nicht zu einer elementweisen Kopie.
Dieses Verhalten blieb auch dann bestehen, wenn in K&R C eine Strukturzuweisung hinzugefügt wurde. Anstatt einen separaten Zuweisungsoperator für Strukturen zu definieren, hat der Compiler Es wurde einfach eine Speicherkopieroperation (memcpy) verwendet, um alle Mitglieder zuzuweisen. Dies schloss effektiv Arrays innerhalb von Strukturen ein.
Folglich führte die Strukturzuweisung implizit eine Form der Array-Zuweisung im Kontext von Strukturen ein. Allerdings blieb diese Zuweisung auf innerhalb von Strukturen beschränkt und die direkte Zuweisung eines Arrays zu einem anderen Array, auch wenn es in einer Struktur enthalten ist, wird in C und C immer noch nicht unterstützt.
Diese Unterscheidung zwischen Arrays innerhalb von Strukturen und Allgemeine Arrays dienen zwei Zwecken:
Das obige ist der detaillierte Inhalt vonWarum erlauben C und C die Member-weise Array-Zuweisung in Strukturen, jedoch nicht für eigenständige Arrays?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!