Was ist der Typ eines String-Literals in C ++? [Duplikat]

8

Zum Beispiel, was ist der Typ des String-Literals "Hallo", const char[6] oder const char* ?

    
Belloc 19.03.2013, 18:56
quelle

2 Antworten

14

Der Typ des String-Literals "Hello" ist "Array von 6 const char ".

  

Gewöhnliche Zeichenfolgenliterale und UTF-8-Zeichenfolgenliterale werden auch als Zeichenfolgenliterale bezeichnet. Ein Narrow-String-Literal hat den Typ "Array von n const char ", wobei n die Größe der Zeichenfolge [...]

ist

Es kann jedoch durch eine Array-to-Pointer-Konvertierung in ein const char* konvertiert werden. Die Umwandlung von Array zu Zeiger führt zu einem Zeiger auf das erste Element des Arrays.

    
Joseph Mansfield 19.03.2013, 18:57
quelle
4

Der Standard definiert es als "Array von n const char ", also ist es const char[n] (n ist die Größe der Zeichenkette, einschließlich des abschließenden NUL-Bytes).

Abschnitt 7, § 2.14.15:

  

Ein Narrow-String-Literal hat den Typ "array of n const char", wobei n die Größe der Zeichenfolge, wie unten definiert, und die statische Speicherdauer hat.

    
user529758 19.03.2013 18:57
quelle

Tags und Links