Questa è una domanda C++ newbie. Qual è la differenza tra i seguenti due costrutti?Come si legge il costrutto del puntatore C++?
1. const int* const* const x
2. const int**
Come posso leggere questi costrutti?
Questa è una domanda C++ newbie. Qual è la differenza tra i seguenti due costrutti?Come si legge il costrutto del puntatore C++?
1. const int* const* const x
2. const int**
Come posso leggere questi costrutti?
Diventa un po 'più facile se si raggruppano le cose nel modo giusto. Ad esempio, *const
è in realtà una sola unità che significa "puntatore const a" (puoi leggere lo const
come pedice qui: *const
). Lo scrivere come:
const int *const *const p1; // p1 is a const pointer to const pointer to const int
const int **p2; // p2 is a pointer to pointer to const int
Ricordare inoltre che le dichiarazioni leggere "inside out", a partire dall'identificatore che viene dichiarato.
Come posso leggere questi costrutti?
Leggere indietro e leggere il *
come "puntatore a".
const int* const* const
è un puntatore costante a un puntatore costante a una costante intera.
const int**
è un puntatore a un puntatore a una costante intera.
C'è uno strumento che è utile/divertente da decifrare dichiarazioni: http://cdecl.ridiculousfish.com/
Nel tuo caso si riferisce: const int* const* const x
=> dichiarare x come puntatore const a const puntatore a const int const int** x
=> dichiarare x come puntatore puntare a const int