Lvalue erforderlicher Fehler

8

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?

    
ankurtr 21.11.2011, 21:18
quelle

3 Antworten

5

Sie können a++ nicht für ein statisches Array verwenden - was kein Lvalue ist. Sie müssen stattdessen einen Zeiger verwenden. Versuchen Sie Folgendes:

%Vor%

In diesem Fall ist es wahrscheinlich besser, einfach den Index zu verwenden:

%Vor%     
Mysticial 21.11.2011, 21:23
quelle
2

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.

    
Jerry Coffin 21.11.2011 22:38
quelle
1

Ссылка

auch ich denke, es kommt auf den Compiler an?

    
WindowsMaker 21.11.2011 21:30
quelle

Tags und Links