0 / 0 / 0
Регистрация: 07.08.2016
Сообщений: 105
1

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

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

Author24 — интернет-сервис помощи студентам
Просто обьясните, как такое возможно?
C++
1
char *a="fff";
В чем отличие от этого? :
C++
1
const char *a="fff";
Ведь так и так строку нельзя изменить.
Вообще как так, обычно указатель содержит ссылку на обьект, а тут он на строку ссылается,у нее же нет адресса, что за?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.01.2018, 19:19
Ответы с готовыми решениями:

Что значит константный указатель на объект, указатель на константный объект, и как это можно использовать?
Подскажите, что значит константный указатель на объект, указатель на константный объект, и как это...

Указатель на константную строку и имя массива как указатель
Изучаю C. У меня есть указатель на константную строку, и я хочу его изменить путем передачи в...

Как записать константный указатель на указатель
Добрый вечер. Вот данная запись говорит. Указатель на константный указатель типа Int. int *...

Константный указатель или указатель на константу?
Привет всем.Уважаемые программисты пожалуйста скажите чем отличать когда написано например int...

2
Эксперт С++
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
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
Каждому свое
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
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
07.01.2018, 21:49
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.01.2018, 21:49
Помогаю со студенческими работами здесь

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

Чем отличаются указатель в теле функции и в аргументе
Здравствуйте. Не могу разобраться чем, в данном случае: bool LexAnalysis(const char* text) {...

Ссылка и указатель: чем отличаются заданные фрагменты кода?
1 int *p; int *q; p = new int; q = new int; *p = 1; *q = 2; p = q; *q = 3;

Указатель на строку: как выводить не всю строку целиком, а конкретную букву
Есть программка: #include<iostream> using namespace std; void fn_str1(int i,string str1,char *p)...


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

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

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