Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
807 / 534 / 158
Регистрация: 27.01.2015
Сообщений: 3,017
Записей в блоге: 1

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

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

Студворк — интернет-сервис помощи студентам
Каков тип rvalue строки "Hello"? const char* const или const char* ?

C++
1
const char* some1 = "Hello";
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.08.2015, 08:59
Ответы с готовыми решениями:

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

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

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

7
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
02.08.2015, 09:02
Лучший ответ Сообщение было отмечено DrOffset как решение

Решение

const char[6]
2
Эксперт PHP
 Аватар для Kerry_Jr
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
02.08.2015, 09:05
Цитата Сообщение от Ferrari F1 Посмотреть сообщение
const char*
можно конечно и const char *const - но это уже больше к самому указателю, нежели к строке, относится.
0
807 / 534 / 158
Регистрация: 27.01.2015
Сообщений: 3,017
Записей в блоге: 1
02.08.2015, 09:09  [ТС]
Tulosba, Kerry_Jr,
можете пожалуйста кинуть правила преобразования указателей? и в каких случаях в результате преобразования теряются квалификаторы?
В частности интересует, почему можно записать следующее без приведения указателей?
C++
1
char* some = "hello";
0
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
02.08.2015, 09:25
Лучший ответ Сообщение было отмечено DrOffset как решение

Решение

Цитата Сообщение от 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
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
02.08.2015, 12:51
Цитата Сообщение от Ferrari F1 Посмотреть сообщение
В частности интересует, почему можно записать следующее без приведения указателей?
Это все ради совместимости со старым кодом. Как вот бывают, например, в русском языке исключения из правил, так и это. Если отключить эту совместимость (что выше и показали), то это не будет работать.
В любом случае, в новом коде такого снятия константности лучше не допускать.
0
807 / 534 / 158
Регистрация: 27.01.2015
Сообщений: 3,017
Записей в блоге: 1
02.08.2015, 14:06  [ТС]
Cпасибо, Кроесмах и Дрофсет
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
02.08.2015, 14:42
Цитата Сообщение от 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 *". Со строковым литералом всё аналогично

Ну и ТС'у может ссылка чем-то поможет https://www.cyberforum.ru/blogs/18334/blog97.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.08.2015, 14:42
Помогаю со студенческими работами здесь

С: Удаление строковых литералов из памяти
Добрый день. Вопрос именно по Си (без ++) и именно для моей конкретной ситуации. Поэтому malloc/free не предлагать Собственно вопрос...

Qt Creator, некорректный парсинг строковых литералов
Как победить эти предупреждения в Qt Creator? ClangCodeModel кключен.

Visual Studio: регулярное выражение для поиска строковых литералов с русскими буквами
Доброго времени суток всем! В проектах на VS C++ нужно искать строковые литералы содержащие хотя бы одну русскую букву. Например...

Строки: массив литералов или тип "string"?
Всем мира! Возник у нас с товарищем принципиальный вопрос. Суть такая: я ему говорю, что строка - это массив символьных значений. Он...

Каков тип переменной, содержащей дробное число
К какому типу данных должна относится переменная, чтобы можно было ей присвоить число, которое получается в результате деления 4 на 6 ? ...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение Это мой обзор планшета X220 с точки зрения школьника. Недавно я решила попытаться уменьшить свой. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru