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

Указатели на строки в c++

05.03.2023, 22:15. Показов 2472. Ответов 50
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Почему указатель на первый элемент массива строк должен быть константным(const char*)? причем мы все равно можем поменять весь массив(всю строку) если будем обращаться не к первому элементу(разыменованому указателю на первый элемент) , а непосредственно к самому имени строки(имени указателя)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.03.2023, 22:15
Ответы с готовыми решениями:

Указатели, символьные строки и функции: удалить из строки слово с заданным номером
Функция удаляет из строки слово с заданным номером: не знаю как делать, сделал через swich case но нужно без них

Указатели.Строки и указатели
Вот условия ввода строки:Вводить и обрабатывать строки в цикле до тех пор пока первый символ не пробел Условия обработки строки: ...

Указатели и указатели на указатели, а также типы данных
Недавно начал изучать Си, перешел с Delphi. Много непонятного и пока процесс идет медленно. Накачал литературы, буду изучать) Щас...

50
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6224 / 2925 / 1046
Регистрация: 01.06.2021
Сообщений: 10,838
05.03.2023, 22:33
Лучший ответ Сообщение было отмечено senv1s как решение

Решение

должен быть константным
не должен, ты же решаешь, что тебе надо.
C++
1
2
3
4
char*
const char*
char* const
const char* const
1
0 / 0 / 0
Регистрация: 19.02.2023
Сообщений: 44
05.03.2023, 22:35  [ТС]
Сейчас понял, что это так только в VS, спасибо
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6224 / 2925 / 1046
Регистрация: 01.06.2021
Сообщений: 10,838
05.03.2023, 22:36
senv1s, константный указатель и указатель на константу - это разные вещи
0
0 / 0 / 0
Регистрация: 19.02.2023
Сообщений: 44
05.03.2023, 22:40  [ТС]
А нет, все таки, в компиляторе GCC тоже так нельзя

Добавлено через 17 секунд
Да, я имел в виду указатель на константу

Добавлено через 2 минуты
Так все таки почему указатель должен быть на константу?
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6224 / 2925 / 1046
Регистрация: 01.06.2021
Сообщений: 10,838
05.03.2023, 22:42
senv1s, что именно нельзя? Выше я написал разные варианты написания и все они допустимы компиляторами. Но эти варианты предназначены абсолютно для разных задач, т.е. они не синонимичны. Поэтому лучше напиши здесь свое оригинальное задание, что ты хочешь сделать?
0
0 / 0 / 0
Регистрация: 19.02.2023
Сообщений: 44
05.03.2023, 22:46  [ТС]
Я про то, что если написать
C++
1
char* str = "string";
то компилятор выведет ошибку, но если написать
C++
1
const char* str = "string";
То все работает
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6224 / 2925 / 1046
Регистрация: 01.06.2021
Сообщений: 10,838
05.03.2023, 22:51
senv1s, нет, этот код абсолютно рабочий в С++. Ищи проблему в другом месте.
C++
1
char* str = "string";
Добавлено через 1 минуту
senv1s, компилятор может предупреждать, но это не ошибка

Добавлено через 39 секунд
Ибо такое написание свойственно языку С, но не С++
0
0 / 0 / 0
Регистрация: 19.02.2023
Сообщений: 44
05.03.2023, 22:52  [ТС]
А каким компилятором вы пользуетесь?
при попытке компиляции на g++ выводит следующую ошибку:
PowerShell
1
2
warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
    6 |          char* str = "string";
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6224 / 2925 / 1046
Регистрация: 01.06.2021
Сообщений: 10,838
05.03.2023, 22:52
Поэтому твой второй вариант для С++ более корректен
0
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,818
05.03.2023, 22:52
Цитата Сообщение от Royal_X Посмотреть сообщение
код абсолютно рабочий в С++.

компилятор может предупреждать, но это не ошибка
Это ошибка.
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6224 / 2925 / 1046
Регистрация: 01.06.2021
Сообщений: 10,838
05.03.2023, 22:58
senv1s, ты наверное передаешь компилятору опцию "рассматривать предупреждения как ошибки"

Добавлено через 4 минуты
senv1s, у тебя сам компилятор говорит, что это не ошибка, а предупреждение. Warning - переведи на русский.
0
0 / 0 / 0
Регистрация: 19.02.2023
Сообщений: 44
05.03.2023, 22:58  [ТС]
Не знаю о такой опции. Где она передается?
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6224 / 2925 / 1046
Регистрация: 01.06.2021
Сообщений: 10,838
05.03.2023, 22:59
DrOffset, ошибка только при -Werror
1
0 / 0 / 0
Регистрация: 19.02.2023
Сообщений: 44
05.03.2023, 22:59  [ТС]
А, и правда скомпилился, я думал он не скомпилируется с предупреждением
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6224 / 2925 / 1046
Регистрация: 01.06.2021
Сообщений: 10,838
05.03.2023, 23:01
senv1s, я же говорю тебе, что это предупреждение.
0
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,818
05.03.2023, 23:02
Цитата Сообщение от Royal_X Посмотреть сообщение
у тебя сам компилятор говорит, что это не ошибка, а предупреждение. Warning - переведи на русский.
Хватит дезинформировать человека.
Подобное снятие константности в С++ было в статусе deprecated (до С++03 включительно), что приводило к выдаче предупреждения в некоторых компиляторах, и полностью запрещается начиная с С++11.
Так что на данный момент это безоговорочно ошибка.
А то, что компилятор все еще выдает предупреждение всего лишь означает, что он находится в "расслабленном" режиме, т.е. грубо говоря компилирует свой собственный диалект (какой-нибудь GNU++ в случае GCC), а не С++.
0
0 / 0 / 0
Регистрация: 19.02.2023
Сообщений: 44
05.03.2023, 23:03  [ТС]
Ну все же, почему компилятор предупреждает что что то не так?
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6224 / 2925 / 1046
Регистрация: 01.06.2021
Сообщений: 10,838
05.03.2023, 23:03
senv1s, но лучше так писать не надо, как и вообще старайся C-style строки использовать минимально
0
0 / 0 / 0
Регистрация: 19.02.2023
Сообщений: 44
05.03.2023, 23:07  [ТС]
Зачем эта запись константы вообще нужна?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.03.2023, 23:07
Помогаю со студенческими работами здесь

Строки и указатели
Выполнить задание двумя способами используя индексы и используя указатели при работе со строками. Удалить в строке все буквы “b”,...

Указатели и строки
Ввести строку, в которой слова разделены пробелами. Если в ней есть хотя бы один символ “:”, то удалить все слова, начинающиеся с...

Строки и указатели
Выполнить задание двумя способами используя индексы и используя указатели при работе со строками. Отредактируйте заданное предложение,...

Указатели и строки
Решил вспомнить, как организовывать работу с указателями на строках. Есть такой фрагмент кода. Вроде всё нормально работает, кроме одного...

Указатели на строки
Есть следующий код: class Strings // класс с указателями на строки (размер которого равен 8) { public: char* str1; ...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это дополнительная запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru