Heim > Backend-Entwicklung > C++ > Was ist der Unterschied zwischen „*ptr', „* ptr', „*ptr' und „(*ptr)' in C?

Was ist der Unterschied zwischen „*ptr', „* ptr', „*ptr' und „(*ptr)' in C?

Linda Hamilton
Freigeben: 2024-12-11 03:03:12
Original
908 Leute haben es durchsucht

What's the Difference Between `*ptr  `, `*  ptr`, `  *ptr`, and `(*ptr)  ` in C?

Zeigerausdrücke: Navigieren ptr , ptr und *ptr

Diese Zeigerausdrücke kommen häufig in der C-Programmierung vor und kann schwierig zu verstehen sein. Hier eine ausführliche Erklärung:

1. *ptr

  • Vorrang: * (Indirektion) hat höhere Priorität als (Inkrement).
  • Ausdruckswert: Wertet aus auf den Wert, auf den ptr vor dem Inkrementieren zeigt.
  • Seite Wirkung:Erhöht ptr um eine Speichereinheit.

Beispiel:

int a = 5;
int *ptr = &a;

*ptr++; // evaluates to 5, then increments ptr to point to the next integer
Nach dem Login kopieren

2. * ptr

  • Vorrang: (Inkrement) und * (Indirektion) haben die gleiche Priorität.
  • Ausdruckswert: Wertet aus auf den Wert, auf den ptr nach dem Inkrementieren zeigt.
  • Seite Wirkung:Erhöht ptr um eine Speichereinheit.

Beispiel:

int a = 5;
int *ptr = &a;

*++ptr; // evaluates to 6 (a++) and increments ptr
Nach dem Login kopieren

3. *ptr

  • Vorrang: (Inkrement) und * (Indirektion) haben den gleichen Vorrang.
  • Assoziativität: Rechts- nach links.
  • Ausdruckswert: Erhöht den Wert, auf den ptr zeigt.
  • Nebenwirkung:Keine.

Beispiel:

int a = 5;
int *ptr = &a;

++*ptr; // increments a to 6
Nach dem Login kopieren

4. (*ptr)

  • Vorrang: Klammern setzen Vorrangregeln außer Kraft.
  • Ausdruckswert: Ergibt den dereferenzierten Wert bei ptr vor dem Inkrementieren.
  • Seite Wirkung:Erhöht den dereferenzierten Wert.

Beispiel:

int a = 5;
int *ptr = &a;

(*ptr)++; // evaluates to 5, then increments *ptr to 6
Nach dem Login kopieren

Beachten Sie, dass ptr , ptr und ptr abstürzen können, wenn ptr ist ein Array-Bezeichner, während (ptr) abstürzen kann, wenn ptr auf eine Zeichenfolge zeigt wörtlich.

Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen „*ptr', „* ptr', „*ptr' und „(*ptr)' in C?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage