Где строке выделяется память?
Есть например такая запись:
const char* s = "Hello, World!";
Как это можно понимать?Мы присваиваем указателю адрес на первый символ строки?Но где у нас эта строка хранится когда мы ее пишем так в присваивании?Я понимаю,когда у нас существует объект string и на него указывает указатель.И почему без const нельзя?
Ответы (1 шт):
Ну, приблизительно так...
Компилятор встречает "Hello, World!". Размещает массив из 14 символов где-то в памяти, причем эта память может быть даже памятью только для чтения (потому и нужен const - менять литерал вы не имеете права. Вы же не пытаетесь менять, скажем, двойку в выражении int i = j*2;? Так уж принято...).
А потом сохраняет адрес первого символа в переменной s. И теперь мы можем узнать, где именно в памяти расположена эта строка.
Так понятнее?