Где строке выделяется память?

Есть например такая запись:

const char* s = "Hello, World!";

Как это можно понимать?Мы присваиваем указателю адрес на первый символ строки?Но где у нас эта строка хранится когда мы ее пишем так в присваивании?Я понимаю,когда у нас существует объект string и на него указывает указатель.И почему без const нельзя?


Ответы (1 шт):

Автор решения: Harry

Ну, приблизительно так...

Компилятор встречает "Hello, World!". Размещает массив из 14 символов где-то в памяти, причем эта память может быть даже памятью только для чтения (потому и нужен const - менять литерал вы не имеете права. Вы же не пытаетесь менять, скажем, двойку в выражении int i = j*2;? Так уж принято...).

А потом сохраняет адрес первого символа в переменной s. И теперь мы можем узнать, где именно в памяти расположена эта строка.

Так понятнее?

→ Ссылка