Форум программистов, компьютерный форум CyberForum.ru

Строковый литерал и указатель на строку. В чем разница? - C++

Восстановить пароль Регистрация
 
Solyanko
Сообщений: n/a
05.07.2012, 16:25     Строковый литерал и указатель на строку. В чем разница? #1
Добрый день.
Начал только изучать С++, не могу понять в чем разница между указателем на литерал и указателем на строку???
Заранее благодарен.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
07.07.2012, 18:29     Строковый литерал и указатель на строку. В чем разница? #2
Solyanko, приведите примеры этих самых указателей, чтобы стало понятно, что вы имеете ввиду.
Catstail
Модератор
 Аватар для Catstail
21501 / 10254 / 1670
Регистрация: 12.02.2012
Сообщений: 17,139
08.07.2012, 15:23     Строковый литерал и указатель на строку. В чем разница? #3
Думаю, разницы нет.
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
08.07.2012, 15:30     Строковый литерал и указатель на строку. В чем разница? #4
строковый литерал - константная строка
соответственно в c++ это const char*
в си это все тот же char*

разница в том, что эту строку нельзя менять (ну не стоит во всяком случае)
Catstail
Модератор
 Аватар для Catstail
21501 / 10254 / 1670
Регистрация: 12.02.2012
Сообщений: 17,139
08.07.2012, 15:32     Строковый литерал и указатель на строку. В чем разница? #5
"разница в том, что эту строку нельзя менять (ну не стоит во всяком случае)" - и не получится...
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
08.07.2012, 15:35     Строковый литерал и указатель на строку. В чем разница? #6
иначе бывает
C
1
2
3
4
5
6
7
char* str = "hello";
 
int main() {
  str [0] = 'H';
  printf ("%s\n", str);
  return 0;
}
Segmentation fault
Добавлено через 2 минуты
Catstail, в си вообще нет понятия константности, так что компилятор сильно и не ограничивает
в cpp опять же это дело обходится либо жестким кастом (static_cast, с-каст), либо const_cast - но там опять сам дурак
Catstail
Модератор
 Аватар для Catstail
21501 / 10254 / 1670
Регистрация: 12.02.2012
Сообщений: 17,139
08.07.2012, 15:36     Строковый литерал и указатель на строку. В чем разница? #7
А если:

C++
1
2
3
4
5
6
7
8
9
char* str = "hello";
char   Nw[6];
 
int main() {
  strcpy(Nw,str)
  Nw[0] = 'H';
  printf ("%s\n", Nw);
  return 0;
}
Это - сколько угодно...
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
08.07.2012, 15:41     Строковый литерал и указатель на строку. В чем разница? #8
Catstail, это вы к чему? что незаконного в этом коде?
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
08.07.2012, 15:43     Строковый литерал и указатель на строку. В чем разница? #9
const char[] - строковый литерал
const char* - указатель на константную строку
Catstail
Модератор
 Аватар для Catstail
21501 / 10254 / 1670
Регистрация: 12.02.2012
Сообщений: 17,139
08.07.2012, 15:46     Строковый литерал и указатель на строку. В чем разница? #10
Silet_1991: Все законно. Я хотел подчеркнуть (для автора вопроса), что строковый литерал через указатель модифицировать не удастся. А переменную - пожалуйста.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.07.2012, 16:07     Строковый литерал и указатель на строку. В чем разница?
Еще ссылки по теме:

C++ Сколько живёт строковый литерал?
В чем разница между указателем и указателем на указатель? C++
C++ разница между указатель на функцию и функция возврата указателя?

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

Или воспользуйтесь поиском по форуму:
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16829 / 5250 / 321
Регистрация: 30.03.2009
Сообщений: 14,139
Записей в блоге: 26
08.07.2012, 16:07     Строковый литерал и указатель на строку. В чем разница? #11
http://www.cyberforum.ru/blogs/18334/blog97.html
Yandex
Объявления
08.07.2012, 16:07     Строковый литерал и указатель на строку. В чем разница?
Ответ Создать тему
Опции темы

Текущее время: 19:17. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru