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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Solyanko
Сообщений: n/a
#1

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

05.07.2012, 16:25. Просмотров 914. Ответов 10
Метки нет (Все метки)

Добрый день.
Начал только изучать С++, не могу понять в чем разница между указателем на литерал и указателем на строку???
Заранее благодарен.
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.07.2012, 16:25
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Строковый литерал и указатель на строку. В чем разница? (C++):

Локальный указатель на локальный строковый литерал - C++
Здравствуйте. Подскажите, пожалуйста, почему локальный указатель, созданный в функции, не уничтожается после вызова функции? То есть мы...

Указатель или ссылка на указатель. В чем разница? - C++
Есть вопрос про указатели и ссылки на указатели :scratch: Хочу в функциях f1() и в f2() динамически выделить память и возвратить этот...

Строковый литерал - C++
Вопрос к профи: Верно ли что, когда мы инициализирум строку вот так: const char *str = "Строка", то компилятор понимает ее так: 1) char...

Сколько живёт строковый литерал? - C++
Имеется код #include <iostream> using namespace std; class myClass { public: myClass(char *s){str=s;} void...

Как в макросе передать параметр в строковый литерал? - C++
Как в макросе передать параметр в строковый литерал? #define f(s) "left##s##right" не работает. Т.к. по команде cout <<...

Как правильно возвращать строковый литерал из функции - C++
Строковый литерал по сути представляет собой указатель на данные. Но что если литерал был создан внутри функции и его значение вернуть?...

10
silent_1991
Эксперт С++
4984 / 3041 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
07.07.2012, 18:29 #2
Solyanko, приведите примеры этих самых указателей, чтобы стало понятно, что вы имеете ввиду.
0
Catstail
Модератор
22711 / 11080 / 1795
Регистрация: 12.02.2012
Сообщений: 18,268
08.07.2012, 15:23 #3
Думаю, разницы нет.
0
alex_x_x
бжни
2447 / 1652 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
08.07.2012, 15:30 #4
строковый литерал - константная строка
соответственно в c++ это const char*
в си это все тот же char*

разница в том, что эту строку нельзя менять (ну не стоит во всяком случае)
1
Catstail
Модератор
22711 / 11080 / 1795
Регистрация: 12.02.2012
Сообщений: 18,268
08.07.2012, 15:32 #5
"разница в том, что эту строку нельзя менять (ну не стоит во всяком случае)" - и не получится...
0
alex_x_x
бжни
2447 / 1652 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
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 - но там опять сам дурак
0
Catstail
Модератор
22711 / 11080 / 1795
Регистрация: 12.02.2012
Сообщений: 18,268
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;
}
Это - сколько угодно...
0
silent_1991
Эксперт С++
4984 / 3041 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
08.07.2012, 15:41 #8
Catstail, это вы к чему? что незаконного в этом коде?
0
Jupiter
Каратель
Эксперт С++
6558 / 3979 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
08.07.2012, 15:43 #9
const char[] - строковый литерал
const char* - указатель на константную строку
0
Catstail
Модератор
22711 / 11080 / 1795
Регистрация: 12.02.2012
Сообщений: 18,268
08.07.2012, 15:46 #10
Silet_1991: Все законно. Я хотел подчеркнуть (для автора вопроса), что строковый литерал через указатель модифицировать не удастся. А переменную - пожалуйста.
0
Evg
Эксперт CАвтор FAQ
18026 / 6258 / 427
Регистрация: 30.03.2009
Сообщений: 17,193
Записей в блоге: 27
08.07.2012, 16:07 #11
http://www.cyberforum.ru/blogs/18334/blog97.html
1
08.07.2012, 16:07
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.07.2012, 16:07
Привет! Вот еще темы с ответами:

В чем разница между указателем и указателем на указатель? - C++
int x, *p, *q; x=10; p=&x; q=p; cout<<*q; int x, *p, **q; x=10; p=&x; q=&p;

"воткнуть" строковый литерал в поток ввода - C++
Подскажите, пожалуйста, как по-быстрому воткнуть строковый литерал в поток ввода? Нужно для тестирования просто, а разбираться со...

Указатель на указатель - разница способов - C++
int a =5; int *b = &a; int **e =&b; //первый способ //Нужно писать столько * скока указателей.. int *f = b; //Втрой...

разница между указатель на функцию и функция возврата указателя? - C++
подскажите пожалуйста очень срочно надо (вопрос на зачет)


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

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

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