Скільки памяті займає змінна типу String

C – Strings

Strings are actually one-dimensional array of characters terminated by a null character ‘\0’. Thus a null-terminated string contains the characters that comprise the string followed by a null.

The following declaration and initialization create a string consisting of the word “Hello”. To hold the null character at the end of the array, the size of the character array containing the string is one more than the number of characters in the word “Hello.”

If you follow the rule of array initialization then you can write the above statement as follows −

Following is the memory presentation of the above defined string in C/C++ −

Actually, you do not place the null character at the end of a string constant. The C compiler automatically places the ‘\0’ at the end of the string when it initializes the array. Let us try to print the above mentioned string −

#include int main () < char greeting[6] = ; printf("Greeting message: %s\n", greeting ); return 0; >

When the above code is compiled and executed, it produces the following result −

C supports a wide range of functions that manipulate null-terminated strings −

Copies string s2 into string s1.

Concatenates string s2 onto the end of string s1.

Returns the length of string s1.

Returns 0 if s1 and s2 are the same; less than 0 if s1s2.

Returns a pointer to the first occurrence of character ch in string s1.

Returns a pointer to the first occurrence of string s2 in string s1.

The following example uses some of the above-mentioned functions −

When the above code is compiled and executed, it produces the following result −

strcpy( str3, str1) : Hello strcat( str1, str2): HelloWorld strlen(str1) : 10

Адресація пам’яті та змінні

У кожного комп’ютера є оперативна пам’ять . Що ж це таке, які має властивості та, найголовніше, яка нам із цього користь?

Кожна програма (включно з програмами , написаними мовою Java) перед виконанням завантажується в оперативну пам’ять . В оперативній пам’яті містяться код програми (який виконується процесором) і дані програми (які в пам’ять поміщає сама програма).

Що ж таке оперативна пам’ять і на що вона схожа?

Уявіть собі Excel 😎 Сторінка в Exсel складається з клітинок (комірок) , і кожна комірка має свій унікальний номер ( A1 , A2 , . B1 , B2 ). Якщо знати номер комірки , завжди можна записати в неї якесь значення або ж отримати значення, що там зберігається. Пам’ять комп’ютера побудована за схожим принципом.

Під час роботи програма та її дані зберігаються в пам’яті . Уся пам’ять комп’ютера складається з маленьких комірок — байтів . Кожна комірка має свій унікальний номер — 0 , 1 , 2 , 3 , . ; (нумерація починається з нуля). Знаючи номер комірки , ми зможемо зберегти в ній певні дані. Або взяти їх із цієї комірки. В одних комірках зберігається код програми — набір команд для процесора, в інших — дані цієї програми. Номер комірки також називають адресою комірки .

Процесор уміє виконувати команди із завантаженої в пам’ять програми. Майже всі команди процесора — це щось на кшталт узяти з деяких комірок дані → щось із ними зробити → результат помістити в інші комірки .

Поєднуючи сотні простих команд, ми отримуємо складні та корисні команди.

Коли в коді програми відбувається оголошення змінної, їй виділяється шматочок іще не використаної пам’яті . Зазвичай це кілька байтів. Під час оголошення змінної обов’язково треба вказати тип інформації, яку програма буде зберігати в ній: числа, текст або інші дані. Адже якщо тип інформації невідомий, то незрозуміло, якого розміру блок пам’яті потрібно виділити для змінної.

На світанку комп’ютерної ери програми працювали просто з номерами комірок пам’яті, але потім для зручності коміркам почали надавати імена. Унікальне ім’я змінної створюється насамперед для полегшення життя програмістів: програма під час роботи чудово впоралася б і з номерами.

2. Змінні в пам’яті

Загалом у Java є 4 типи даних для зберігання цілих чисел. Це byte , short , int і long .

ТипРозмір, байтПоходження імені
byte1Byte , оскільки займає один байт пам’яті
short2Скорочення від Short Integer
int4Скорочення від Integer
long8Скорочення від Long Integer

Також у Java є 2 дійсні типи — float і double:

ТипРозмір, байтПоходження імені
float4Скорочення від Floating Point Number
double8Скорочення від Double Float

Щоразу, коли виконання програми доходить до команди створення змінної, цій змінній виділяється невелика область пам’яті (розмір області залежить від типу змінної).

Java-програмам заборонено звертатися безпосередньо до пам’яті. Уся робота з пам’яттю відбувається лише через Java-машину.

3. Тип String у пам’яті

Тип String може зберігати великі обсяги даних, тому це не просто тип даних, а повноцінний клас.

Дані типу String (текст) поміщаються в спеціальний об’єкт, для якого виділяється пам’ять, а вже адреса цього об’єкта поміщається в змінну, для якої теж виділяється пам’ять.

Змінна a типу int займає 4 байти і зберігає значення 1 .

Змінна b типу int займає 4 байти і зберігає значення 10,555 . Кома тут не відокремлює дробову частину числа, а розділяє групи розрядів. Дробову частину відокремлюють крапкою.

Змінна d типу double займає 8 байтів та зберігає значення 13.001 .

Змінна str типу String займає 4 байти і зберігає значення G13 — адресу першої комірки об’єкта, який містить текст.

Об’єкт типу String (який містить текст) зберігається в окремому блоці пам’яті. Адреса його першої комірки зберігається в змінній str .

4. Чому в програмуванні все нумерують починаючи з нуля

Люди часто дивуються, чому в програмуванні майже скрізь починають відлік з нуля. Річ у тім, що є дуже багато ситуацій, коли рахувати починаючи з нуля зручніше (хоча трапляються й такі ситуації, коли зручніше рахувати починаючи з 1 ).

Найпростіша з таких ситуацій — це адресація пам’яті. Якщо вашій змінній виділили 4 байти пам’яті й ви знаєте, що X — адреса першого байта, то яку адресу буде мати кожен із цих байтів? X + 0 , X + 1 , X + 2 , X + 3 . Ось ми вже й отримали групу байтів із індексами 0 , 1 , 2 , 3 (тобто для визначення адрес усіх байтів знадобилася група чисел саме від 0 до 3 ).

Коли ми думаємо про відносну адресу всередині будь-якого блоку даних, завжди отримуємо нумерацію з нуля. Це і є перша й найпоширеніша причина починати відлік з нуля .

Related Post

Як правильно заряджати гіроскутер увімкненим або вимкненимЯк правильно заряджати гіроскутер увімкненим або вимкненим

Зміст:1 Як правильно заряджати гіроскутер1.0.1 Контролює час зарядки гіроскутера1.0.2 Правила зарядки гіроскутерів2 Як зарядити гироскутер? Як правильно його заряджати, включеним або вимкненим? Як зрозуміти, що він зарядився? Скільки часу він