2010-11-25 9 views
1

Dies ist der Punkt, von ISO: Standard Conversions: Array-zu-Zeiger-Konvertierung: $ 4.4: Qualifikation Wandlungen/5. PunktStandardumwandlungen: Qualifikation Konvertierungen

A multi-level pointer to member type, or a multi-level mixed pointer and 
    pointer to member type has the form: 
      cv 0 P 0 to cv 1 P 1 to . . . cv n − 1 P n − 1 to cv n T 
    where P i is either a pointer or pointer to member and where T is not a 
    pointer type or pointer to member type. 

Kann man this.If möglich Erklären Sie das Beispiel geben .. Was eigentlich für diese Form bedeutete. Kann jemand es elaborate? Ähnlich .. Es gibt verschiedene Form in diesem Abschnitt (Qualifizierung Konvertierungen)

Antwort

1

Sie sagen einfach, dass Sie einen Zeiger auf einen Zeiger auf einen Zeiger auf einen Zeiger auf ... zu etwas anderem als einem Zeiger haben können. Bei jeder dieser Schritte auf dem Weg können Sie const, volatile oder beides haben. So zum Beispiel könnten Sie haben:

int const * volatile *const volatile x; 

was bedeutet x ist ein const, volatile Zeiger auf einen flüchtigen Zeiger auf einen const int.

+1

das Beispiel u gab, ist nichts anderes als Multi-Level-poiner type..can u in der Lage, mir zu sagen, vollständige Erklärung steht für –

+3

@BE Student: Ich habe versucht, das Stück zu klären Sie haben gepostet, die nur einen Multi-Level-Pointer umfasst, in dem jede Ebene möglicherweise separate Qualifier hat. Das ist alles, was es wirklich sagt. Ich bin mir nicht sicher, was du meinst: "Kann mir sagen, dass die volle Aussage für" –

+1

ein mehrstufiger gemischter Zeiger und Zeiger auf Elementtyp das folgende Format hat: –

3

Ein Multilevelzeiger ist ein Zeiger auf einen Zeiger.

Variablen können const oder volatile normal sein (diese cv-Qualifier genannt werden). Wenn Sie einen Zeiger haben, können sowohl die Daten, auf die gezeigt wird, als auch der Zeiger selbst cv-Kennzeichner haben. Wenn Sie einen Multilevel-Pointer haben, kann es cv-Qualifier auf jeder Ebene geben.

Zum Beispiel:

int i1 = 1; 
const int i2 = 2; 
int * p1 = &i1; // p1 is a non-constant pointer to a non-constant int 
int * const p2 = &i1; // p2 is a constant pointer to a non-constant int 
int const * p3 = &i2; // p3 is a non-constant pointer to a constant int 
const int * p4 = &i2; // same as p3 
int const * const p5 = &i2; // p5 is a constant pointer to a constant int 
int * * pp1 = &p1; // non-const pointer to non-const pointer to non-const int 
int * * const pp2 = &p1; // const pointer to non-const pointer to non-const int 
int * const * pp3 = &p2; // non-const pointer to const pointer to non-const int 
int const * * pp4 = &p3; // non-const pointer to non-const pointer to const int 
// etc. 
Verwandte Themen