Warrior
500 / 427 / 177
Регистрация: 23.11.2014
Сообщений: 932
1

Указатель на константную текстовую строку

07.04.2018, 00:21. Показов 1445. Ответов 7
Метки нет (Все метки)

С точки зрения стандарта это валидный код?

C++
1
2
3
4
5
6
int main()
{
    char* pproverb{ "A miss is as good as a mile." };
 
    return 0;
}
Visual Studio 2017 Version 15.7.0 Preview 2.0 в проекте стоит C++ Language Standard: ISO C++17 Standard (/std:c++17)
просит для компиляции добавить const

1>*: error C2440: 'initializing': cannot convert from 'const char [29]' to 'char *'
1>*: note: Reason: cannot convert from 'const char [29]' to 'char *'
1>*: note: Conversion from string literal loses const qualifier (see /Zc:strictStrings)

Просит флаг я так понимаю https://docs.microsoft.com/en-... conversion
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.04.2018, 00:21
Ответы с готовыми решениями:

Как правильно кастовать указатель на константную ф-ю
Здравствуйте. Вот рабочий пример: #include <iostream> struct foo { void f(int a, int b) {...

Использование указателя на константную строку
Здравствуйте. Почему так char* kk = "345345"; kk = 0x00; компилятор ругается, а так ...

Чем отличаются указатель на строку и константный указатель на строку?
Просто обьясните, как такое возможно? char *a="fff"; В чем отличие от этого? : const char...

Как правильнее ввести текстовую строку
почему стандартный ввод небезопасен? что лучше делать так char str; char *s; s = gets( str );...

7
-1 / 25 / 4
Регистрация: 27.11.2017
Сообщений: 375
07.04.2018, 00:42 2
Вот валидный код:

C++
1
const char* pproverb{ "A miss is as good as a mile." };
0
зомбяк
1565 / 1214 / 345
Регистрация: 14.05.2017
Сообщений: 3,936
07.04.2018, 01:05 3
_exp10der_, не валидный. Пытаешься присвоить неконстантному указателю адрес константной строки. Укажешь const char* - ошибки не будет.
0
nd2
3433 / 2812 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
07.04.2018, 01:34 4
Цитата Сообщение от TRam_ Посмотреть сообщение
Укажешь const char* - ошибки не будет.
Константного указателя - тоже.
0
Warrior
500 / 427 / 177
Регистрация: 23.11.2014
Сообщений: 932
07.04.2018, 02:22  [ТС] 5
Просто этот компилятор пропускает https://ideone.com/XLahjs но если 9 и 10 раскомментировать то упадет в рантайме. Поэтому я спросил стандарт языка позволяет это делать или нет.
0
Warrior
500 / 427 / 177
Регистрация: 23.11.2014
Сообщений: 932
07.04.2018, 02:22  [ТС] 6
del
0
зомбяк
1565 / 1214 / 345
Регистрация: 14.05.2017
Сообщений: 3,936
07.04.2018, 04:13 7
_exp10der_,
C++
1
char pproverb[]{ "A miss is as good as a mile." };
и всё заработает. Подробнее здесь - https://www.cyberforum.ru/blogs/18334/blog97.html
0
Неэпический
17806 / 10579 / 2042
Регистрация: 27.09.2012
Сообщений: 26,605
Записей в блоге: 1
07.04.2018, 10:13 8
Цитата Сообщение от _exp10der_ Посмотреть сообщение
Поэтому я спросил стандарт языка позволяет это делать или нет.
Нет, не позволяет.
Цитата Сообщение от _exp10der_ Посмотреть сообщение
Просто этот компилятор пропускает
Добавьте этом компилятору флаг -pedantic-errors и он перестанет так делать.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.04.2018, 10:13
Помогаю со студенческими работами здесь

Вывести четные числа записанные в текстовую строку
Дана строка символов, состоящая из цифр, разделенных пробелами. Вывести четные числа этой строки.

Описать функцию, которая формирует текстовую строку
Дан текст в файле F1 в виде: ИМЯ ОТЧЕСТВО ФАМИЛИЯ_1 ИМЯ ОТЧЕСТВО ФАМИЛИЯ_2 ... Описать функцию,...

Вывод множества символов, входящих в заданную текстовую строку
Создать программу, которая составляет и выводит множество символов, входящих в заданную текстовую...

Вводим текстовую строку. Вывести на экран те слова, в которых предпоследняя буква – согласная.
Вводим текстовую строку. Вывести на экран те слова, в которых предпоследняя буква – согласная....


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru