Na przykład jaki jest typ ciągu literowego "Cześć", const char[6]
lub const char*
?Jaki jest typ literału ciągu w C++?
Odpowiedz
typ łańcucha dosłownym "Hello"
jest "tablica 6 const
char
".
Zwykłe literały ciągów i literały ciągów UTF-8 są również nazywane wąskimi literałami ciągów. Wąski Łańcuch znaków ma typ „tablica n
const char
”, w którym njest rozmiar łańcucha [...]
Jednakże może być przekształcony w const char*
przez macierz do Konwersja pointeru. Konwersja tablicy do wskaźnika powoduje wyświetlenie wskaźnika do pierwszego elementu tablicy.
To prawdopodobnie tłumaczy, dlaczego ten kod pokazuje ostrzeżenie 'C4172 zwracający adres zmiennej lokalnej lub tymczasowej' dla tej funkcji 'const char * const & f() {return "witaj"; } 'w VS2010. Czy zgadzasz się z tym ? – Belloc
@ user1042389 Wskaźnik będący wynikiem konwersji tablica-do-wskaźnika jest obiektem tymczasowym. Zwracasz referencję do tego obiektu, więc referencja pozostaje zwisająca. –
Gdzie jest tymczasowy? "hello" istnieje w pamięci statycznej! – Belloc
Standard definiuje go jako "tablicę z n const char
", więc jest to const char[n]
(n jest rozmiarem ciągu, łącznie z kończącym bajtem NUL).
sekcja 7 § 2.14.15:
Wąski Łańcuch znaków ma typ „układ n const karbonizatu”, w którym n oznacza wielkość łańcuchu, jak zdefiniowano poniżej i posiada statyczną czas przechowywania.
- 1. W jaki sposób C# wie, jaki jest typ literału?
- 2. Jaki jest maksymalny rozmiar ciągu w C#?
- 3. Jaki jest "krótki" typ danych w C?
- 4. Jaki jest faktyczny typ lambda w C#?
- 5. Dlaczego zwracanie odwołania do literału ciągu jest odwołaniem do tymczasowego?
- 6. W C++, jeśli rzut jest wyrażeniem, jaki jest jego typ?
- 7. Jaki jest najlepszy typ danych SQL do przechowywania ciągu JSON?
- 8. Jaki jest typ użytkownika facebook
- 9. Jak używać argumentu Makro jako literału ciągu?
- 10. Jaki jest typ dolny?
- 11. Jak wygenerować liczbę całkowitą z literału ciągu w czasie kompilacji?
- 12. jaki jest niepodpisany typ danych?
- 13. Jaki jest poprawny typ MIME dla JSON?
- 14. Jaki jest typ dla "połowy" (binary16) w C#?
- 15. Jaki jest domyślny typ danych liczbowych w C?
- 16. Jak uzyskać wartość literału ciągu w LLVM IR?
- 17. Jaki jest typ elementów pseudoelementów?
- 18. Jaki jest zasięg zmiennej w ciągu `class_eval`?
- 19. Jaki jest typ obiektu zagnieżdżonego w scala
- 20. W TypeScript: Jaki jest typ obrazu?
- 21. Jaki jest typ PI, cos w Ruby
- 22. Jaki jest najlepszy typ w języku Hack?
- 23. Jaki jest równoważny typ serwera SQL dla typu C#?
- 24. jaki jest typ zwrotu operatora przypisania?
- 25. Statyczny ciąg literału?
- 26. Jaki jest typ tej samoczynnej funkcji silni?
- 27. Kiedy jest typ wartości/odniesienie typ ograniczenia użyteczne w C#?
- 28. Nawiasy wokół literału ciągu znaków w deklaracji tablicy znaków są poprawne? (np. char s [] = {"Hello World"})
- 29. Jaki jest typ danych MLSLABEL Oracle?
- 30. Jaki jest odpowiedni typ danych do przechowywania strefy czasowej?
'const char [6]'. – juanchopanza
co masz na myśli mówiąc "typ"? – nabroyan
@nabroyan W C++ każda wartość ma typ. OP chce znać typ literału literowego. –