crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Указатель char на строку.
Гость_TheJax_*
сообщение 14.1.2016, 1:30
Сообщение #1





Гости








    


Добрый вечер уважаемые программисты. Очень хотелось бы разобраться с одним вопросом, а именно.
Вызывает ли компилятор неявно оператор new в данном случае:
...
char *ptr="Hello World!";
...


И в этом случае:
...
char pp[]="Hello World!";
...


Вот для символов Hello World! вызывается оператор new? Ведь указатель ptr указывает на какой-то адрес, как тогда этот адрес выделяется?
И почему указатель ptr является константным ?? С указателем pp все ясно, там идет работа с копией строки "Hello World!", а вот с ptr не очень.

Спасибо!!!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
lanz
  опции профиля:
сообщение 14.1.2016, 10:03
Сообщение #2


Старейший участник
****

Группа: Участник
Сообщений: 690
Регистрация: 28.12.2012
Пользователь №: 3660

Спасибо сказали: 113 раз(а)




Репутация:   8  


В первом случае:
Компилятор знает сколько памяти нужно для строки и на этапе компиляции помещает строку в исполняемый файл. А в ptr загружается адрес строки.
При исполнении загрузчик загружает строку в нужный адрес и все работает :lol:
Во втором случае происходит
http://en.cppreference.com/w/cpp/language/..._initialization
Выделяется массив pp, который код инициализации заполняет нужной строкой.

EDIT2:
http://c-faq.com/decl/strlitinit.html

Сообщение отредактировал lanz - 14.1.2016, 10:04
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 1.12.2024, 8:10