Когда переменная объявлена как const, это означает, что переменная доступна только для чтения и не может быть изменена. Поэтому для того, чтобы переменная была доступна только для чтения, она должна быть инициализирована в момент ее объявления.
Для лучшего понимания переменных взгляните на следующую программу
Каждый процесс состоит в основном из 4 частей адресного пространства, которые доступны для процесса, когда он выполняется
Текст - эта часть содержитфактические инструкции m / c, которые будут выполнены.Во многих операционных системах этот параметр установлен только для чтения, поэтому процесс не может изменять свои инструкции.Это позволяет нескольким экземплярам программы совместно использовать одну копию текста.
Данные - эта часть содержит часть данных программы.Далее он делится на
1) Инициализированные данные только для чтения - он содержит элементы данных, которые инициализируются программой, и они читаются только во время выполнения процесса.
2) Инициализированное чтениеЗапись данных. Содержит элементы данных, которые инициализируются программой и будут изменены в ходе выполнения процесса.
3) Неинициализированные данные. Содержит элементы, которые не были инициализированы программой и имеют значение 0.до выполнения процессов.Они также могут быть изменены и обозначены как BSS (символ начала блока).Преимуществом таких элементов является то, что системе не нужно выделять место в программном файле для этой области, потому что она инициализируется в 0 операционной системой до того, как процесс начнет выполняться.
Stack - эта частьиспользуется для локальных переменных, стековых фреймов
Heap - эта часть содержит динамически выделенную память
int abc = 1; ----> Initialized Read-Write Data
char *str; ----> BSS
const int i = 10; -----> Initialized Read-Only Data
main()
{
int ii,a=1,b=2,c; -----> Local Variables on
Stack
char *ptr;
ptr = malloc(4); ------> Allocated Memory in Heap
c= a+b; ------> Text
}
Данные, данные для хранения Текст, код для хранения
Есть 3 (main?) сегменты / разделы файла, создаваемые компоновщиком.текст - текст программы (и, видимо, массивы const char. возможно, другие массивы 'const', так как они не могут быть изменены в любом случае).Я не уверен на 100% в части массива, возможно, кто-то меня поправит.
data - инициализированные глобальные данные.см. примеры ниже.bss - неинициализированные глобальные данные.Вот несколько примеров
int x = 1; /* goes into data */
int y; /* goes into bss */
const int z = 1;/* goes into text */
, мы видели, что идут в «текст», так как не могут быть изменены в любом случае, но могут быть защищены