Array-Zuweisungsdilemma in C
In C ist die direkte Zuweisung eines Arrays zu einem anderen Array nicht möglich und die Fehlermeldung „Fehler C2106 : '=': Der linke Operand muss einen L-Wert haben. Dieses Problem ergibt sich aus dem besonderen Verhalten von Arrays in C aufgrund der Kompatibilität mit C.
Verstehen des Verhaltens
Arrays in C sind aufgrund einer Vererbung von nicht zuweisbar Array-Implementierung von C. Arrays werden als verfallende Verweise auf ihr erstes Element dargestellt, wodurch sie nicht veränderbare L-Werte sind. Mit anderen Worten: Arrays können nicht wie reguläre Variablen anderen Objekten zugewiesen werden.
Lösung
Um mit Array-ähnlicher Funktionalität in C zu arbeiten, alternative Container aus der Standardvorlage Es werden Bibliotheken (STL) empfohlen, z. B. std::array oder std::vector. Diese STL-Container ermöglichen Array-ähnliches Verhalten und bieten gleichzeitig Zuweisungsfunktionen.
Beispiel mit std::array
#include <array> int main() { std::array<int, 5> numbers = {1, 2, 3}; std::array<int, 5> values = {}; values = numbers; }
Fallback mit Arrays
Wenn die Verwendung von STL-Containern keine Option ist, ist das manuelle Kopieren von Array-Elementen mithilfe einer Schleife oder einer Funktion wie std::copy möglich notwendig.
Beispiel mit Array-Kopieren
#include <algorithm> int main() { int numbers[5] = {1, 2, 3}; int values[5] = {}; std::copy(numbers, numbers + 5, values); }
Zusätzlicher Hinweis
Das Wertearray kann mit einem leeren Wert initialisiert werden Initialisierungsliste, wie unten gezeigt, basierend auf der standardmäßig definierten Wertinitialisierungsregel für Aggregate, die nicht spezifizierte Elemente initialisiert Null.
int values[5] = {};
Das obige ist der detaillierte Inhalt vonWarum kann ich Arrays in C nicht direkt zuweisen und welche Alternativen gibt es?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!