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

Указатель на строковую константу. В чем отличие двух приведенных примеров - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
Vegas_I
1 / 1 / 0
Регистрация: 28.02.2013
Сообщений: 103
27.01.2014, 14:40     Указатель на строковую константу. В чем отличие двух приведенных примеров #1
char *x;
x = "Текст"; это указатель на строковую константу.

char x[]="Текст"; - строка(т.е. массив символов).


В чём отличие двух вышеописанных примеров? Ведь и там и там х -это указатель на начало массива. Почему в первом случае строка - это константа, а во втором нет?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.01.2014, 14:40     Указатель на строковую константу. В чем отличие двух приведенных примеров
Посмотрите здесь:

В чем отличие printf от cout? C++
C++ В чем отличие While от Do... While?
Преобразование в указатель на указатель на константу C++
Указатель на строковую константу C++
Указатель или ссылка на указатель. В чем разница? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
НеСказочник
27.01.2014, 18:10     Указатель на строковую константу. В чем отличие двух приведенных примеров
  #21

Не по теме:

Цитата Сообщение от ValeryS Посмотреть сообщение
зря смеешся
что кривые дрова ни разу не попадались?
а там нет разделение на свой чужой
и отловить их гораздо труднее
Это всё из-за того, что сейчас в Microsoft криворукие программисты сидят. В процах есть 4 кольца безопасности: одно для ядра, два для дров и одно для приложений. Так вот если бы они все 4 кольца по уму использовали, то половины синих экранов никогда бы не было. А у них, видете-ли, промышленное/быстрое программирование, заключающееся в постулате "Сделал как попало, главное работает."

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Vegas_I
1 / 1 / 0
Регистрация: 28.02.2013
Сообщений: 103
27.01.2014, 18:11  [ТС]     Указатель на строковую константу. В чем отличие двух приведенных примеров #22
Вот нашёл сообщение на форуме:
Изменить значение указателя

Вроде как объясняет мой вопрос..
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5549 / 2563 / 233
Регистрация: 01.11.2011
Сообщений: 6,337
Завершенные тесты: 1
28.01.2014, 08:39     Указатель на строковую константу. В чем отличие двух приведенных примеров #23

Не по теме:

Цитата Сообщение от НеСказочник Посмотреть сообщение
сейчас в Microsoft криворукие программисты...половины синих экранов никогда бы не было
Что-то я на XP уже плохо припоминаю синие экраны, а вот девяносто восьмую помню как каждую неделю руками надо было поднимать. Так что вы там про сейчас говорите?



Цитата Сообщение от Vegas_I Посмотреть сообщение
Вот нашёл сообщение на форуме
А сразу вам не захотелось почитать то, которое я написал?
1. Общие сведения

Ещё одна конструкция языков Си и Си++, которая часто приводит в затруднение начинающих - это строковой литерал. Начинающим, как правило, трудно понять, чем принципиально отличаются две следующие конструкции:

C
1
2
char str1[] = "abc";
char *str2 = "abc";
И так далее.
Kuzia domovenok
 Аватар для Kuzia domovenok
1883 / 1738 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
28.01.2014, 11:17     Указатель на строковую константу. В чем отличие двух приведенных примеров #24
НеСказочник, считаешь себя умнее программистов майкрософт?
Croessmah
28.01.2014, 11:19
  #25

Не по теме:

Цитата Сообщение от НеСказочник Посмотреть сообщение
Это всё из-за того, что сейчас в Microsoft криворукие программисты сидят.
либо виндой пользуются криворукие пользователи. Винда у меня была приблизительно лет 10(с переустановками, конечно), ни одного синего экрана я за это время у себя не увидел.

Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
28.01.2014, 12:15     Указатель на строковую константу. В чем отличие двух приведенных примеров #26
Цитата Сообщение от ValeryS Посмотреть сообщение
C++
1
char *x = "Текст";
равносилен
C++
1
char x[]="Текст";
Это не так. SatanaXIII уже приводил ссылку на блог, где это объясняется.

Не по теме:

Цитата Сообщение от Croessmah Посмотреть сообщение
ни одного синего экрана я за это время у себя не увидел.
А у меня монитор отдавал розовым, поэтому тоже действительно синего экране не было
На восьмерке BSOD интересный, с грустным смайликом.

ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,061
28.01.2014, 12:31     Указатель на строковую константу. В чем отличие двух приведенных примеров #27
Цитата Сообщение от Tulosba Посмотреть сообщение
Это не так.
я это знаю
Цитата Сообщение от Tulosba Посмотреть сообщение
SatanaXIII уже приводил ссылку на блог,
я имел ввиду что в данном контексте,
что никакого выделения памяти в куче не будет
Цитата Сообщение от НеСказочник Посмотреть сообщение
хранятся там. эта память очень быстрая, но надо заранее знать сколько попросить, ибо расширять сегмент по ходу дела нельзя. А ещё есть так называемая куча , в которой можно по ходу дела забить столько места, сколько нужно. Но тогда тебе нужно хранить адрес начала той части кучи, в которой хранятся твои данные, например Код C++1
char *x = "Текст";. Все переменные в которых между типом и названием стоит завёздочка - хранят только адреса памти, а сами данные хранятся в куче.
вот на это я отвечал
хотя согласен получилось несколько коряво
или указатель на константу, или массив все таки разница есть
Croessmah
28.01.2014, 13:38
  #28

Не по теме:

Цитата Сообщение от Tulosba Посмотреть сообщение
А у меня монитор отдавал розовым, поэтому тоже действительно синего экране не было
у меня фиолетовым отдавал, но метод сильного тыка кулаком в монитор устранял проблему на пару дней
Цитата Сообщение от Tulosba Посмотреть сообщение
На восьмерке BSOD интересный, с грустным смайликом.
скоро еще можно будет его погладить, чтобы успокоить расстроившуюся систему. Не просто так же они под сенсор заточили винду

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.01.2014, 16:31     Указатель на строковую константу. В чем отличие двух приведенных примеров
Еще ссылки по теме:

C++ cin.get в чем отличие ?
В чем отличие алгоритмов set_union и merge? C++
C++ Указатель на строковую константу

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

Или воспользуйтесь поиском по форуму:
НеСказочник
58 / 46 / 7
Регистрация: 12.11.2012
Сообщений: 339
Записей в блоге: 2
28.01.2014, 16:31     Указатель на строковую константу. В чем отличие двух приведенных примеров #29
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
считаешь себя умнее программистов майкрософт?
Не в этом дело. Я раньше долго не понимал почему только два уровня безопасности (приложения и ядро), пока не узнал, что их на самом деле больше и обеспечиваются они ЦП, но используются нормально только два из них.
Yandex
Объявления
28.01.2014, 16:31     Указатель на строковую константу. В чем отличие двух приведенных примеров
Ответ Создать тему
Опции темы

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