Ich habe eine ähnliche Frage zu Structs here gestellt, aber ich versuche herauszufinden, wie C Dinge wie das Zuweisen von Variablen behandelt und warum es nicht erlaubt ist, sie einander zuzuordnen, wenn sie funktionell gleich sind.C-Array-Deklaration und Zuweisung?
Lets sagen, ich habe zwei Arrays:
int x[10];
int y[10];
Warum nicht x = y kompilieren? Wenn sie beide die gleiche "Signatur" sind, dann sollten Sie sie nicht hin und her zuordnen können?
Kann ich diese so deklarieren, dass ich das in C machen kann? Es macht Sinn für mich, dass Sie es könnten, aber vielleicht gibt es einen Weg, wie dies getan werden kann? Typedefs für Strukturen schien die Lösung zu sein, wäre es für Array Deklaration und Zuweisung dasselbe?
Ich schätze Ihre Jungs helfen, ich bin neu zu Stackoverflow, aber es war eine wirklich gute Ressource für mich bisher!
Dieser Code tut immer noch nicht das, was er * wollte *, es zu tun, oder? Vielleicht irre ich mich, aber ich hatte den Eindruck, dass er hoffte, den Inhalt des y-Arrays in x zu kopieren. –
Wahr. Glücklicherweise haben viele andere Antworten angegeben, dass memcpy() die richtige Wahl ist. Ich werde es hinzufügen in ... –
"Der Name eines Arrays ist eigentlich die Adresse des ersten Elements dieses Arrays. Der Beispielcode, den Sie hier angeben, versucht, etwas zuzuweisen, das kein l-Wert ist." Aus Gründen der Nachwelt dachte ich, ich würde bemerken, dass beide Sätze der am meisten gewählten Antwort falsch sind. Erstens, der Name eines Arrays ist definitiv * kein Zeiger (z. B. think sizeof()), er zerfällt in vielen Fällen einfach zu einem Zeiger. Zweitens, der Name des Arrays * ist * ein L-Wert, nur kein modifizierbarer L-Wert. –