powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / почему a = b не работает, но a = с + b - c работает?
8 сообщений из 8, страница 1 из 1
почему a = b не работает, но a = с + b - c работает?
    #39272613
Charles Weyland
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
char* text;
...
const char * b = text;
...
b++ ...
...
char *endofphrase = b; // не работает
char *endofphrase = text + (b - text); // работает
...
Рейтинг: 0 / 0
почему a = b не работает, но a = с + b - c работает?
    #39272618
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всё написано в сообщении об ошибке.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
почему a = b не работает, но a = с + b - c работает?
    #39272697
BagaBaga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
потому что
Код: plaintext
1.
const char *


не то же самое, что
Код: plaintext
1.
char *



А вообще-то вам правильн сказали - читайте, что выдаёт компилятор.
...
Рейтинг: 0 / 0
почему a = b не работает, но a = с + b - c работает?
    #39272703
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще-то вы оба отвечаете не на тот вопрос который задан )))
Вопрос был: почему в одном случае работает, а в другом нет?
Ответ: потому что в одном случае вы присваиваете указатель на константу в обычный указатель, и это запрещенное действие, а во втором случае вы присваиваете указатель + сдвиг в такой же указатель. Поэтому с точки зрения компилятора все нормально (он не обязан отслеживать как вы его через хаки пытаетесь обмануть).
Но не смотря на то что код скомпилировался, проблема которую изначально решал компилятор, остается та же самая - вы получили неконстантный указатель на константную память, и в скором времени собираетесь выстрелить себе в ногу, попытавшись изменить эту память.
...
Рейтинг: 0 / 0
почему a = b не работает, но a = с + b - c работает?
    #39272705
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly Moskovskyвы получили неконстантный указатель на константную память

Нет. text у него это char*. И даже с прибавление ptrdiff_t он остаётся char*.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
почему a = b не работает, но a = с + b - c работает?
    #39272713
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovНет. text у него это char*. И даже с прибавление ptrdiff_t он остаётся char*.
Да кто его знает что в него присвоили в первом "..." ))
...
Рейтинг: 0 / 0
почему a = b не работает, но a = с + b - c работает?
    #39272714
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskyДа кто его знает что в него присвоили в первом "..." ))

const char* в него всё равно без явных кастов или ругани компилятора не присвоить.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
почему a = b не работает, но a = с + b - c работает?
    #39272725
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakovconst char* в него всё равно без явных кастов или ругани компилятора не присвоить.
Строковые литералы большинство компиляторов разрешают в char* присваивать. В лучшем случае предупреждение дают.
Но кто читает эти предупреждения, скомпилировалось и ладно, правда ведь, Charles Weyland
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / почему a = b не работает, но a = с + b - c работает?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]