Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Ferrari F1
Заблокирован
#1

Каков тип строковых литералов? - C++

02.08.2015, 08:59. Просмотров 219. Ответов 7
Метки нет (Все метки)

Каков тип rvalue строки "Hello"? const char* const или const char* ?

C++
1
const char* some1 = "Hello";
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.08.2015, 08:59     Каков тип строковых литералов?
Посмотрите здесь:

C++ Каков синтаксис оператора <?( меньше )
C++ Цикл в цикле? Каков лучший вариант?
Каков тип второго параметра функций Polyline и Polygon? C++
C++ Каков современный подход для работы со строками
C++ Каков будет результат выполнения следующего кода
C++ Каков будет результат выполнения следующего кода
C++ Каков будет результат выполнения следующего кода?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tulosba
:)
Эксперт С++
4384 / 3227 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
02.08.2015, 09:02     Каков тип строковых литералов? #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
const char[6]
Kerry_Jr
Модератор
 Аватар для Kerry_Jr
2037 / 1833 / 637
Регистрация: 14.05.2014
Сообщений: 5,349
Записей в блоге: 1
Завершенные тесты: 5
02.08.2015, 09:05     Каков тип строковых литералов? #3
Цитата Сообщение от Ferrari F1 Посмотреть сообщение
const char*
можно конечно и const char *const - но это уже больше к самому указателю, нежели к строке, относится.
Ferrari F1
Заблокирован
02.08.2015, 09:09  [ТС]     Каков тип строковых литералов? #4
Tulosba, Kerry_Jr,
можете пожалуйста кинуть правила преобразования указателей? и в каких случаях в результате преобразования теряются квалификаторы?
В частности интересует, почему можно записать следующее без приведения указателей?
C++
1
char* some = "hello";
Croessmah
Модератор
Эксперт CЭксперт С++
 Аватар для Croessmah
12512 / 7074 / 794
Регистрация: 27.09.2012
Сообщений: 17,468
Записей в блоге: 2
Завершенные тесты: 1
02.08.2015, 09:25     Каков тип строковых литералов? #5
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Tulosba Посмотреть сообщение
const char[6]
Подкреплю стандартом:
Ordinary string literals and UTF-8 string literals are also referred to as narrow string literals. A narrow string literal has type “array of n const char”, where n is the size of the string as defined below, and has static storage duration
Цитата Сообщение от Ferrari F1 Посмотреть сообщение
и в каких случаях в результате преобразования теряются квалификаторы?
Const - обещание (гарантия) или требование?

Добавлено через 11 минут
Цитата Сообщение от Ferrari F1 Посмотреть сообщение
В частности интересует, почему можно записать следующее без приведения указателей?
С соответствующими опциями не будет:
http://rextester.com/MACX53472
DrOffset
6817 / 4028 / 924
Регистрация: 30.01.2014
Сообщений: 6,847
02.08.2015, 12:51     Каков тип строковых литералов? #6
Цитата Сообщение от Ferrari F1 Посмотреть сообщение
В частности интересует, почему можно записать следующее без приведения указателей?
Это все ради совместимости со старым кодом. Как вот бывают, например, в русском языке исключения из правил, так и это. Если отключить эту совместимость (что выше и показали), то это не будет работать.
В любом случае, в новом коде такого снятия константности лучше не допускать.
Ferrari F1
Заблокирован
02.08.2015, 14:06  [ТС]     Каков тип строковых литералов? #7
Cпасибо, Кроесмах и Дрофсет
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.08.2015, 14:42     Каков тип строковых литералов?
Еще ссылки по теме:

Как передать массив символьных литералов в функцию? C++
Сравнение строковых литералов C++
Объяснить нюансы использования литералов-перечислителей C++
Каков будет результат работы функции? C++
C++ Как вывести значение переменной bool в виде литералов false и true?

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
17181 / 5435 / 336
Регистрация: 30.03.2009
Сообщений: 14,729
Записей в блоге: 26
02.08.2015, 14:42     Каков тип строковых литералов? #8
Цитата Сообщение от Tulosba Посмотреть сообщение
const char[6]
Исходный пример, грубо говоря, эквивалентен

C
void foo (void)
{
  const char a[6] = "Hello";
  const char *p;
  p = a;
}
тип "a" действительно есть "const char[6]", однако правая часть выражения эквивалентна "&a[0]" с типом "const char *". Со строковым литералом всё аналогично

Ну и ТС'у может ссылка чем-то поможет http://www.cyberforum.ru/blogs/18334/blog97.html
Yandex
Объявления
02.08.2015, 14:42     Каков тип строковых литералов?
Ответ Создать тему
Опции темы

Текущее время: 17:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru