2010-11-25 6 views
1

C'est le point de l'ISO: Conversion standard: conversion Array-à-pointeur: 4,4 $: Les conversions de qualification/5ème point deconversions standard: conversions de qualification

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. 

Quelqu'un peut-il expliquer this.If possible donner l'exemple .. Qu'est-ce que signifiait réellement pour cette forme.Peut-on l'éloiler? De même .. Il existe différentes formes dans cette section (conversions de qualification)

Répondre

1

Ils disent simplement que vous pouvez avoir un pointeur vers un pointeur vers un pointeur vers ... vers autre chose qu'un pointeur. À chacune de ces étapes, vous pouvez avoir const, volatile ou les deux. Ainsi, par exemple, vous pourriez avoir:

int const * volatile *const volatile x; 

qui signifie x est un const, volatile pointeur à un pointeur volatile à un const int.

+1

l'exemple u est donné, mais rien Poiner multi-niveaux type..can u capable de me dire, déclaration complète représente pour –

+3

@BE Etudiant: Je tentais de clarifier la pièce vous avez posté, qui ne couvre qu'un pointeur à plusieurs niveaux, dans lequel chaque niveau a potentiellement des qualificatifs séparés. C'est tout ce qu'il dit vraiment. Je ne suis pas sûr de ce que vous entendez par: "pouvez-vous me dire, déclaration complète représente pour" –

+1

un pointeur mixte multi-niveau et un pointeur vers le type de membre a la forme: –

3

Un pointeur multiniveau est un pointeur vers un pointeur.

Les variables peuvent être const ou volatile normalement (ceux-ci sont appelés cv-qualifiés). Lorsque vous avez un pointeur, les données pointées et le pointeur lui-même peuvent avoir des qualificatifs cv. Lorsque vous avez un pointeur à plusieurs niveaux, il peut y avoir des qualificatifs cv à n'importe quel niveau.

Par exemple:

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. 
Questions connexes