Der Unterschied zwischen „*p++“ und „(*p)++“ ist: 1. „*p++“ gibt den Wert der Einheit an, auf die p zeigt, und p zeigt auf die nächste Einheit, das heißt, p erhöht sich um 1. „*p++“ bezieht sich auf die nächste Adresse. 2. „(*p)++“ bedeutet das Hinzufügen von eins zum Wert der Daten, auf die *p zeigt.
Die Betriebsumgebung dieses Tutorials: Windows 7-System, C++17-Version, Dell G3-Computer.
Differenz:
1. *p++ gibt den Wert der Einheit an, auf die p zeigt, und p zeigt auf die nächste Einheit, d. h. p erhöht sich um 1. *p++ bezieht sich auf die nächste Adresse.
2. (*p)++ bedeutet das Hinzufügen von eins zum Wert der Daten, auf die *p zeigt.
Der C-Compiler betrachtet * und ++ als Operatoren mit derselben Priorität und wird von rechts nach links kombiniert, sodass ++ in *p++ nur auf p wirkt und dieselbe Bedeutung wie *(p++) hat ( In *p)++ wirkt ++ auf den Ausdruck *p innerhalb von (), da () eine höhere Priorität als * und ++ hat.
Zum Beispiel:
int x,y,a[]={1,2,3,4,5},*p=a,*q=a;
x=*p++;//Diesen Satz ausführen Nach x=a[0]=1, p=a+1
y=(*q)++;//Nach der Ausführung dieses Satzes ist y=a[0]+1=2, q immer noch=a
Erweiterte Informationen:
Verifizierungsprogramm 1
#include"stdio.h" void main() { int a=2; int*p=&a; int*pold;//记录P指向的地址,为了作为比较使用 pold=p; //-----------原来的信息 printf("原来的a=%d",a); printf("原来的p=%x",p); printf("原来的pold=%x",pold); //----------进行变化 printf("*p++的结果=%d,a的结果a=%d",*p++,a); printf("地址变化的结果p-pold=%x",p-pold); }
Programm 2
#include"stdio.h" void main() { int a=2,*p=&a,*q=&a; printf("%d%d",(*p),a); printf("%d%d%d%d",(*p)++,*p++,*q++,a); printf("%d",a); }
Programm 3:
#include"stdio.h" void main() { int a=2,*p=&a,*q=&a; printf("%d%d",(*p),a); printf("%d%d%d",*p++,(*p)++,*q++); p=&a;q=&a; printf("%d%d%d%d",a,*p,(*q)++,a); printf("%d%d%d%d",a,++(*p),++(*q),a); printf("%d",a); }
Zusammenfassung:
*p++ besteht darin, zuerst den Wert von *p herauszunehmen und dann p++ zu lassen
(* p) ++ soll zuerst den Wert von *p herausnehmen, sei dieser Wert ++
*(P++) heißt, zuerst den Wert von *p herauszunehmen, sei p++
Also ist *p++ äquivalent zu *( P++)
und die Operation von printf Die Reihenfolge läuft von rechts nach links. Darüber hinaus wird right++ ausgeführt, nachdem der gesamte Operationsausdruck berechnet wurde, und die Ausführungsreihenfolge von right++ ist von links nach rechts. Wenn left++ auf eine Variable trifft, erhöht es sofort den Wert der Variablen.
Überprüfen Sie die Reihenfolge der Operationen von printf
#include"stdio.h" void main() { int a=2; printf("a++=%d,++a=%d,a++=%d",a++,++a,a++); printf("a=%d",a); }
Empfohlenes Tutorial: „C#“
Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen *p++ und (*p)++?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!