a
ist ein Array-Objekt und kein Zeiger, sodass Sie die Operation a++
nicht verwenden können
für ein Array-Objekt. weil dies äquivalent ist zu:
Hier ordnen Sie dem Array-Objekt einen neuen Wert zu, der in C nicht erlaubt ist.
a + 1
gibt einen Zeiger auf das Element 1 Ihres a
-Arrays zurück und es ist erlaubt
Okay, ernsthaft schlechte Programmierpraktiken: Lassen Sie uns zuerst Ihr Problem angehen:
%Vor%kann nicht verwendet werden, weil a eine implizite Referenz auf das Array ist;
Sie können dies tun:
%Vor%und los gehts ...
Auch *(a++)
ist NICHT das gleiche wie *(a+1)
, weil ++
versucht, den Operanden zu ändern, während +
einfach einen Wert zum konstanten a
-Wert hinzufügt.
'a' verhält sich wie ein const-Zeiger. 'a' kann seinen Wert oder die Adresse, auf die er zeigt, nicht ändern. Dies liegt daran, dass der Compiler Speicher der Größe des Arrays statisch zugewiesen hat und Sie die Adresse ändern, auf die verwiesen wird.
Sie können dies stattdessen wie folgt tun
%Vor%