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

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

Linda Hamilton
Linda HamiltonOriginal
2024-12-20 07:20:09250Durchsuche

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

Zeigerausdrücke: ptr , ptr und *ptr

Das Verständnis dieser drei Zeigerausdrücke kann entmutigend sein. In dieser ausführlichen Anleitung wird die Funktionsweise der einzelnen Ausdrücke aufgeschlüsselt und Beispiele für ihre praktische Anwendung im Code bereitgestellt.

*ptr

Dieser Ausdruck dereferenziert den Zeiger und erhöht dann die Zeiger Adresse.

Beispiel:

char *p = "Hello";
while (*p++) {
    printf("%c", *p);
}

Dieser Code gibt „ello“ anstelle von „Hallo“ aus, da der Zeiger nach dem Zugriff auf das Zeichen inkrementiert wird. Überspringen des „H“-Zeichens.

* ptr

Dieser Ausdruck Erhöht die Adresse des Zeigers und dereferenziert dann den Zeiger.

Beispiel:

char *p = "Hello";
printf("%c", *++p);

Dieser Code gibt „e“ als Zeichen nach dem aus Auf den anfänglichen Zeigerwert (der auf „H“ zeigt) wird zugegriffen, bevor er inkrementiert wird, um darauf zu zeigen 'e'.

*ptr

Dieser Ausdruck dereferenziert den Zeiger und erhöht dann den Wert an der Adresse.

Beispiel:

char q[] = "Hello";
char *p = q;
printf("%c", ++*p);

Dieser Code gibt „I“ aus, da der Wert direkt an der Adresse steht auf 'I' erhöht.

(*ptr)

Dieser Ausdruck ist etwas anders und erzwingt eine Dereferenzierung vor der Erhöhung des Werts.

Beispiel:

char q[] = "Hello";
char *p = q;
printf("%c", (*p)++);

Dieser Code druckt „H“ und macht dann das nächstes Inkrementziel „I“.

Schlussfolgerung

Diese Zeigerausdrücke bieten Flexibilität bei der Zeigermanipulation. Es ist jedoch wichtig, sich ihrer Feinheiten bewusst zu sein, einschließlich der Rangfolge, der Wertbewertung und der Nebenwirkungen. Wenn Sie diese Vorgänge im Detail verstehen, können Sie sie effektiv in Ihrem Code nutzen und potenzielle Fallstricke vermeiden.

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

Stellungnahme:
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