Ad esempio, qual è il tipo di stringa letterale "Hello", const char[6]
o const char*
?Qual è il tipo di stringa letterale in C++?
risposta
Il tipo di stringa letterale "Hello"
è "vettore di 6 const
char
".
I valori letterali di stringa ordinaria e i valori letterali di stringa UTF-8 sono anche indicati come letterali stringa stretti. Una stringa stretta letterale è di tipo “vettore di n
const char
”, dove n è la dimensione della stringa [...]
Può tuttavia essere convertito in un const char*
mediante array-to - conversione del punto. La conversione da matrice a puntatore produce un puntatore al primo elemento dell'array.
Questo probabilmente spiega perché questo codice mostra un avvertimento 'C4172 che restituisce l'indirizzo della variabile locale o temporaneo'per questa funzione' const char * const & f() {return "ciao"; } 'in VS2010. Sei d'accordo con questo? – Belloc
@ user1042389 Il puntatore risultante dalla conversione da matrice a puntatore è un oggetto temporaneo. Si sta restituendo un riferimento a quell'oggetto, in modo tale che il riferimento venga lasciato penzolare. –
Dov'è il temporaneo? "ciao" esiste nella memoria statica! – Belloc
Lo standard lo definisce come "matrice di n const char
", quindi è const char[n]
(n è la dimensione della stringa, incluso il byte NUL di chiusura).
sezione 7, § 2.14.15:
Una corda stretta letterale ha tipo “array di n const char”, dove n è la dimensione della stringa come definito di seguito, ed ha durata di conservazione statica.
- 1. Tipo di stringa letterale C++
- 2. Qual è il tipo di valore letterale nulla?
- 3. Deduce il tipo da stringa letterale
- 4. Il tipo letterale in Haskell
- 5. C++: passando una stringa letterale di tipo const char * in una stringa di parametri
- 6. multilinea C# interpolato stringa letterale
- 7. Creare una stringa letterale modificabile in C++
- 8. Meta-carattere sconosciuto in stringa letterale C/C++?
- 9. Qual è il tipo di dati "breve" in C?
- 10. Qual è il tipo di riferimento intero in C#?
- 11. Qual è il vero tipo di lambda in C#?
- 12. Qual è il tipo di "mezzo" (binario16) in C#?
- 13. Struct è non letterale tipo
- 14. python: come convertire la stringa letterale in stringa raw letterale?
- 15. Tabella letterale stringa statica?
- 16. Che tipo dovrei prendere se lancio una stringa letterale?
- 17. È possibile convertire una stringa C letterale in maiuscolo usando il preprocessore (macro)?
- 18. qual è il tipo di elenco di inizializzazione nell'array C++?
- 19. Qual è il tipo GUID?
- 20. È il letterale 0xffffffff int o non firmato in C++
- 21. C/C++, puoi # includere un file in una stringa letterale?
- 22. Come esprimere una stringa letterale all'interno di un modello parametrizzato dal tipo di caratteri utilizzati per rappresentare il letterale?
- 23. In che modo C# sa di che tipo è il letterale?
- 24. Concatena stringa letterale con char letterale
- 25. Indirizzamento dell'indirizzo di una stringa letterale in C
- 26. Vuoto come tipo letterale?
- 27. Classe di riferimento letterale stringa
- 28. Objective-C: "stringa di formato non è una stringa letterale (potenzialmente insicuro)" avvertimento con la macro
- 29. stringa Sizeof letterale
- 30. Stringa letterale multilinea in Matlab?
'const char [6]'. – juanchopanza
cosa intendi dicendo "tipo"? – nabroyan
@nabroyan In C++, ogni valore ha un tipo. OP vuole conoscere il tipo di stringa letterale. –