Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > C++ > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 23.07.2009, 07:31   #11
mazak
Пользователь
 
Аватар для mazak
 
Регистрация: 10.07.2009
Сообщений: 29
Репутация: 10
По умолчанию строки

Константная строка возникает в следующих случаях:

1. Запись текстовой константы в кавычках во всех случаях кроме присвоения начального значения массиву;
2. Явная конверсия указателя в строковый буфер (на элемент строкового буфера) к типу указателя на константный символ.

Например, в следующем случае происходит присвоение указателю адреса константной строки:


const char* message = "Hello world!";

В следующем случае происходит не присвоение адреса константной строки, а инициализация буфера:


const char message[] = "Hello world!";

По поводу на какой элемент сегмент, область, памяти -указатели средство работы с адресами.
__________________
Благими намерениями вымощена дорога в ад
mazak вне форума   Ответить с цитированием
Старый 23.07.2009, 10:58   #12
JOFRIF
Форумчанин
 
Регистрация: 21.04.2008
Адрес: 0x1000
Сообщений: 147
Репутация: 37
По умолчанию

Цитата:
const char message[] = "Hello world!";

В следующем случае происходит не присвоение адреса константной строки, а инициализация буфера:
то-есть строка в данном случае помещается в буфер а не в память ?
JOFRIF вне форума   Ответить с цитированием
Старый 23.07.2009, 13:05   #13
netrino
Профессионал
 
Аватар для netrino
 
Регистрация: 15.07.2008
Адрес: г. Киев, Украина
Сообщений: 1,933
Репутация: 736
По умолчанию

Цитата:
Сообщение от JOFRIF Посмотреть сообщение
Спасибо, теперь понятно.

Но насчет этого как то не до конца понимаю
1)На этапе компиляции размещает в Вашей программе строку "123"(в области данных) - понятно.
2)char *s = указатель на "123" - Это указатель на область/сегмент памяти, или на первый элемент?
Указатель по своей сути есть ни что иное, как адрес какой-то ячейки памяти. Одной. Невозможно указывать на область. То есть s будет указывать на ячейку с первым символом строки. Остальные символы будут идти прямо за первым, в самом конце будет аскишный 0('\0'), дабы было ясно где конец строки.
netrino вне форума   Ответить с цитированием
Старый 23.07.2009, 13:22   #14
JOFRIF
Форумчанин
 
Регистрация: 21.04.2008
Адрес: 0x1000
Сообщений: 147
Репутация: 37
По умолчанию

Цитата:
Сообщение от netrino Посмотреть сообщение
Указатель по своей сути есть ни что иное, как адрес какой-то ячейки памяти. Одной. Невозможно указывать на область. То есть s будет указывать на ячейку с первым символом строки. Остальные символы будут идти прямо за первым, в самом конце будет аскишный 0('\0'), дабы было ясно где конец строки.
Большое спасибо!
Вы наконец ответили на этот вопрос который мучал меня.
Теперь, если сложить весь "пазл" то получается вот что:

char *s = "123";

1)Компилятор помещает строку в память(В данном случае выделяет 4 последовательных ячейки - 4 байта на всю строку).
2)Компилятор возвращает адрес первого символа (куда он поместил строку)
3)Затем этот адрес присваивается указателю на тип char
4)Теперь у нас есть адрес первой ячейки памяти и мы можем работать с отдельными символами строки.

Если все это правильно то я наконец понял .
Всем большое спасибо.
JOFRIF вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вопрос по строкам в паскале NEMO1991 Паскаль 2 07.06.2009 13:14
Народ,зацените!Вопрос по строкам с++ Познающий Общие вопросы C/C++ 32 12.05.2009 20:16
вопрос по строкам CraZZy RabbIt Общие вопросы Delphi 4 21.04.2009 19:00
Вопрос по Visual Basic 6. С.М.С Помощь студентам 7 08.03.2009 14:51
Вопрос по Visual C++ TheLostOne Visual C++ 4 12.02.2009 01:23


03:52.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.