Beim Arbeiten mit Zeigern habe ich den folgenden Code geschrieben,
%Vor%Nun nach meinem Verständnis Array-Name selbst ist eine Adresse in c und die Pointer-Arithmetik erfolgt hier ist nach meinem Wissen korrekt. Aber wenn ich versuche, den Code auszuführen, gibt es mir "Lvalue Required" -Fehler.
Also was ist der genaue Grund für den aufgetretenen Lvalue-Fehler, weil ich zuvor auch auf Situationen gestoßen bin, in denen dieser Fehler vorliegt. Zweitens warum ist die Arithmetik auf dem Zeiger hier in diesem Fall nicht legal?
In den meisten Fällen wird der Name eines Arrays zu einem Wert ausgewertet, der einem Zeiger zugewiesen werden kann - aber es ist immer noch ein Wert und kein tatsächlicher Zeiger.
Dies ist analog zu einem Wert wie, sagen wir, 17
. Sie können den Wert 17
übernehmen und einem int zuweisen. Sobald Sie das getan haben, können Sie int
erhöhen, dekrementieren und anderweitig manipulieren. Sie können jedoch nichts von 17
selbst tun - es ist was es ist und kann nicht geändert werden.
Der Name eines Arrays ist ziemlich genau so. Es hat den richtigen Typ, um es einem Zeiger zuweisen zu können, aber es ist nur ein Wert, den Sie nicht manipulieren können. Wenn Sie diesen Wert einem Zeiger zuweisen, können Sie den Zeiger manipulieren, aber Sie können nie viel zum ursprünglichen Wert selbst machen - es ist was es ist und kann nicht geändert werden.