Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
Ferrari F1
613 / 507 / 101
Регистрация: 27.01.2015
Сообщений: 2,951
Записей в блоге: 1
Завершенные тесты: 1
#1

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

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

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

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

Сравнение строковых литералов - C++
Добрый день, есть кроссплатформенные гарантии на то, что адреса одного и тоже же строкового литерала внутри одного .exe/.lib будут...

Префиксы u и U для строковых литералов - C++
Есть код //g++ 5.4.0 #include <iostream> int main() { wchar_t title = L"Chief Astrogator"; // строка w_char ...

Каков тип второго параметра функций Polyline и Polygon? - C++
Каков тип второго параметра функций Polyline и Polygon?

Суффиксы числовых литералов - C++
в учебнике видел вот такую строчку: const float PI = 3.14159F; или вот такую: longvar = 7678L; вопрос такой: зачем в конце...

Объяснить нюансы использования литералов-перечислителей - C++
Почему в Си не допускается, чтобы один и тот же литерал-перечислитель входил в два различных перечислимых типа? Могут ли совпадать имена...

Как передать массив символьных литералов в функцию? - C++
Могу так? почему то не работает void DailySchedule::Set_Schedule(int* b, int* e, char** c) int main() { DailySchedule D; int...

7
Tulosba
:)
Эксперт С++
4396 / 3232 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
02.08.2015, 09:02 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
const char[6]
2
Kerry_Jr
Модератор
Эксперт PHP
2206 / 2002 / 701
Регистрация: 14.05.2014
Сообщений: 5,867
Записей в блоге: 1
Завершенные тесты: 5
02.08.2015, 09:05 #3
Цитата Сообщение от Ferrari F1 Посмотреть сообщение
const char*
можно конечно и const char *const - но это уже больше к самому указателю, нежели к строке, относится.
0
Ferrari F1
613 / 507 / 101
Регистрация: 27.01.2015
Сообщений: 2,951
Записей в блоге: 1
Завершенные тесты: 1
02.08.2015, 09:09  [ТС] #4
Tulosba, Kerry_Jr,
можете пожалуйста кинуть правила преобразования указателей? и в каких случаях в результате преобразования теряются квалификаторы?
В частности интересует, почему можно записать следующее без приведения указателей?
C++
1
char* some = "hello";
0
Croessmah
Ушел
Эксперт CЭксперт С++
13553 / 7704 / 872
Регистрация: 27.09.2012
Сообщений: 19,006
Записей в блоге: 3
Завершенные тесты: 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
2
DrOffset
7376 / 4453 / 1009
Регистрация: 30.01.2014
Сообщений: 7,304
02.08.2015, 12:51 #6
Цитата Сообщение от Ferrari F1 Посмотреть сообщение
В частности интересует, почему можно записать следующее без приведения указателей?
Это все ради совместимости со старым кодом. Как вот бывают, например, в русском языке исключения из правил, так и это. Если отключить эту совместимость (что выше и показали), то это не будет работать.
В любом случае, в новом коде такого снятия константности лучше не допускать.
0
Ferrari F1
613 / 507 / 101
Регистрация: 27.01.2015
Сообщений: 2,951
Записей в блоге: 1
Завершенные тесты: 1
02.08.2015, 14:06  [ТС] #7
Cпасибо, Кроесмах и Дрофсет
0
Evg
Эксперт CАвтор FAQ
18238 / 6363 / 435
Регистрация: 30.03.2009
Сообщений: 17,578
Записей в блоге: 28
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
0
02.08.2015, 14:42
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.08.2015, 14:42
Привет! Вот еще темы с ответами:

Как вывести значение переменной bool в виде литералов false и true? - C++
В C++ когда я вывожу значение переменной bool, оно выводится всегда 1 или 0. Как сделать чтобы выводилось false или true, какие аргументы...

Каков синтаксис оператора <?( меньше ) - C++
Надо было написать программу, считывающую количество слов, которые пользователь хочет ввести, затем программа считывает каждое слово и...

Рекурсия: каков порядок выполнения? - C++
Не понимаю каков будет порядок действий в функции допустим когда(level =2). По тому как я понял работает рекурсия, когда начнется алгоритм...

Цикл в цикле? Каков лучший вариант? - C++
Господа, поделитесь опытом, пожалуйста, для общего блага среди начинающих. Как лучше ввсего организовать цикл в цикле для решения...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

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