Mögliche Duplizieren:
what is the difference between const int*, const int * const, int const *Unterschied zwischen const char * p und char const * p
Are there any Difference between const char* p and char const* p
Mögliche Duplizieren:
what is the difference between const int*, const int * const, int const *Unterschied zwischen const char * p und char const * p
Are there any Difference between const char* p and char const* p
Einige der Wörter sind nicht in der gleichen Reihenfolge.
(es gibt keinen semantischen Unterschied, bis die const zum Stern relativ bewegt)
Ich lachte darüber mehr als die SO-Regeln erlauben mir zu tun. –
Hahahaha .. episch! : D –
Es gibt keinen funktionalen Unterschied zwischen diesen beiden. Die "genauere" ist char const * p
, weil die Semantik von rechts nach links ist.
Es gibt keinen semantischen Unterschied, aber es ist eine Frage des Codierungsstils und der Lesbarkeit. Für komplexe Ausdrücke, arbeitet von rechts nach links zu lesen fein:
char const ** const
ist ein const pointer to a pointer to a constant char
.
So char const *
ist in dieser Hinsicht konsistenter. Viele Menschen bevorzugen jedoch const char*
für seine Lesbarkeit - es ist sofort klar, was es bedeutet.
const char* p
ist ein Zeiger auf eine const char
.
char const* p
ist ein Zeiger auf eine char const
.
Seit const char
und char const
ist das gleiche, es ist das gleiche.
Allerdings betrachten:
char * const p
ist ein const
Zeiger auf eine (nicht-const) char. I.e. Sie können das tatsächliche Zeichen ändern, aber nicht den Zeiger, der darauf zeigt.
Kein Unterschied, da sich die Position des '*' nicht bewegt hat.
1) const char * p - Zeiger auf einen konstanten char ('P' ist nicht änderbar, aber der Zeiger)
2) char const * p - auch auf einen konstanten Char Zeiger
Jedoch, wenn Sie hatten etwas wie:
char * const p - Dies deklariert 'p', um ein konstanter Zeiger auf ein Zeichen zu sein. (Char p ist änderbar, aber der Zeiger ist nicht)
Der Betrogene ist hier: http://StackOverflow.com/Q/890535/694576 nicht wo es für nah gewesen war, da das letztere über C++ ist. – alk