2010-06-24 19 views

Antwort

11

Einige der Wörter sind nicht in der gleichen Reihenfolge.

(es gibt keinen semantischen Unterschied, bis die const zum Stern relativ bewegt)

+2

Ich lachte darüber mehr als die SO-Regeln erlauben mir zu tun. –

+0

Hahahaha .. episch! : D –

2

Es gibt keinen funktionalen Unterschied zwischen diesen beiden. Die "genauere" ist char const * p, weil die Semantik von rechts nach links ist.

2

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.

17

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.

4

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)