Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++
Войти
Регистрация
Восстановить пароль
 
javay
0 / 0 / 0
Регистрация: 07.08.2016
Сообщений: 64
#1

Чем отличаются указатель на строку и константный указатель на строку?

07.01.2018, 19:19. Просмотров 244. Ответов 2
Метки нет (Все метки)

Просто обьясните, как такое возможно?
C++
1
char *a="fff";
В чем отличие от этого? :
C++
1
const char *a="fff";
Ведь так и так строку нельзя изменить.
Вообще как так, обычно указатель содержит ссылку на обьект, а тут он на строку ссылается,у нее же нет адресса, что за?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.01.2018, 19:19
Ответы с готовыми решениями:

Как понять этот константный указатель?
В общем, имеется класс Cat. Объект класса - SimpleCat. И имеется функция с константым указателем:...

Зачем нужен указатель на указатель при работе с однонаправленным списком?
День добрый. Столкнулся с непониманием этой темы. В частности, совершенно непонятен алгоритм...

Указатель this
как в windows Forms // горячую клавишу?

Меняется указатель?
Привет всем. Поставил себе задачу, вытащить из одной игры данные (здоровье, деньги, уровень), и...

friend указатель
Есть ли что-то типа этого в стандарте: class A { protected: double a; public: typedef...

2
hoggy
Заблокирован
Эксперт С++
07.01.2018, 21:39 #2
Цитата Сообщение от javay Посмотреть сообщение
Просто обьясните, как такое возможно?
древнее наследние раздолбайного языка си.

Цитата Сообщение от javay Посмотреть сообщение
В чем отличие от этого? :
const char *a="fff";
первый вариант запрещен:
C++
1
2
source_file.cpp:7:15: warning: ISO C++ forbids converting a string constant to ‘char*[-Wwrite-strings]
     char *a = "fff";
но оставлен для говнокодеров обратной совместимости с сишным кодом.


Цитата Сообщение от javay Посмотреть сообщение
Вообще как так, обычно указатель содержит ссылку на обьект, а тут он на строку ссылается,у нее же нет адресса, что за?
строка - вполне себе полноценный объект.
у неё есть вполне себе валидный адрес.
0
Bretbas
Каждому свое
519 / 205 / 81
Регистрация: 05.08.2013
Сообщений: 1,610
Завершенные тесты: 2
07.01.2018, 21:49 #3
javay,
Цитата Сообщение от javay Посмотреть сообщение
обычно указатель содержит ссылку на обьект, а тут он на строку ссылается,у нее же нет адресса, что за?
Указатель хранит адрес. Вот ваше a хранит некий адрес, где хранится строка "fff".

Цитата Сообщение от javay Посмотреть сообщение
В чем отличие от этого? :
Объясняю. Дело в том, что в языке C/C++ все строковые литералы имеют тип const char [N], где N - количество символов в строке + завершающий нуль. Так вот, такой код:
char *a="fff";
с этой строкой нельзя работать, если она не будет постоянной. Так как все указатель на char* - это по сути указатель на первый элемент массива, а строка "fff" имеет тип const char [4], тоесть получается несоответствие типов! Это неверно для C/C++. Все строки нужно объявлять как const char*
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.01.2018, 21:49

Указатель на метод
struct abc{ int a; int b; int c; abc(int na = 0, int nb = 0, int nc =...

Указатель на функцию
Доброго времени суток! Кто может посоветовать способ присвоить указателю на функцию значение, т.е....

Умный указатель ComPtr
Равноценна ли запись с простым указателем #include <d3d11_1.h> ID3D11Device *device_11_0 =...


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

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

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