Зберігання масиву в пам'яті

Глобальна (один файл)

Комп'ютерна програма в цілому або її окрема процедура називається реєнтерабельним (від англ. Reentrant - повторно входимо), якщо вона розроблена таким чином, що одна і та ж копія інструкцій програми в пам'яті може бути спільно використана декількома користувачами або процесами. При цьому другий користувач може викликати реєнтерабельним код до того, як з ним завершить роботу перший користувач і це як мінімум не повинно призвести до помилки, а в кращому випадку не повинно викликати втрати обчислень (тобто не повинно з'явитися необхідність виконувати вже виконані фрагменти коду) .

Реєнтерабельним тісно пов'язана з безпекою функції в багатопотокової середовищі (thread-safety), тим не менше, це різні поняття (в практичному програмуванні під сучасні ОС термін «реєнтерабельним» на ділі рівносильний терміну «thread-safe»). Забезпечення реєнтерабельним є ключовим моментом при програмуванні багатозадачних систем, зокрема, операційних систем.

Для забезпечення реєнтерабельним необхідне виконання кількох умов:

· Ніяка частина викликається коду не повинна модифікуватися;

· Викликається процедура не повинна зберігати інформацію від одного виклику;

· Якщо процедура змінює будь-які дані, то вони повинні бути унікальними для кожного користувача;

· Процедура не повинна повертати покажчики на об'єкти, загальні для різних користувачів.

У загальному випадку, для забезпечення реєнтерабельним необхідно, щоб викликає процес або функція кожен раз передавав викликається процесу всі необхідні дані. Таким чином, функція, яка залежить тільки від своїх параметрів, не використовує глобальні і статичні змінні і викликає тільки реєнтерабельним функції, буде реєнтерабельним. Якщо функція використовує глобальні або статичні змінні, необхідно забезпечити, щоб кожен користувач зберігав свою локальну копію цих змінних.

Ситуацію, коли функція тим чи іншим чином викликає саму себе, називають рекурсією. Рекурсія, коли функція звертається сама до себе безпосередньо, називається прямою; в іншому випадку вона називається непрямою.

Всі функції мови С ++ (крім функції main) можуть бути використані для побудови рекурсії.

У рекурсивної функції обов'язково має бути присутнім хоча б одна умова, при виконанні якого послідовність рекурсивних викликів повинна бути припинена.

18) Масиви призначені для зберігання безлічі значень одного типу. Наприклад, в програмі Fahrenheit to Celsius. ми вираховували середнє значення температури з трьох. Якщо значень не три, а набагато більше, то тут якраз і потрібно використовувати масиви.

Перш ніж використовувати масив, його потрібно визначити. Визначення масиву включає в себе: тип даних зберігаються в масиві, ім'я масиву і в квадратних дужках вказується кількість елементів масиву:

У цьому коді ми визначили масив з ідентифікатором (ім'ям) array (масив) з десяти елементів типу int.

У такому вигляді, все елементи масиву ще неініціалізованих. Щоб форматувати їх при оголошенні, потрібно використовувати наступний синтаксис:

Зберігання масиву в пам'яті

Елементи масиву розташовуються в пам'яті послідовно, один за одним. Кожен елемент масиву займає стільки пам'яті, скільки відводиться під змінну, тип якої вказано при описі масиву.

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

Літеральна константа - це константа (число, рядковий вираз, дата), розташована безпосередньо в коді.

Наприклад: X = Y + 2

Тут число 2 є літеральної константою.


Символьні рядки зберігають таку інформацію, як імена файлів, назви книг, імена службовців та інші символьні поєднання. Більшість програм на C ++ широко використовують символьні рядки. Далі ви дізнаєтеся, що в C ++ символьні рядки зберігаються в масиві тіпаchar, який закінчується символом NULL (або ASCII 0). В даному уроці символьні рядки розглядаються більш докладно. Ви дізнаєтеся, як зберігати і обробляти символьні рядки, а також як використовувати функції бібліотеки етапу виконання, які маніпулюють символьними рядками. До кінця цього уроку ви освоїте наступні основні концепції:

Покажчик є однією з найбільш важливих концепцій мови C.

Правильне розуміння і використання покажчиків особливо необхідно для складання хороших програм з наступних причин:

· Покажчики є засобом, за допомогою якого функції можуть змінювати значення переданих в неї аргументів;

· За допомогою покажчиків виконується динамічний розподіл пам'яті;

· Покажчики дозволяють підвищити ефективність програмування;

· Покажчики забезпечують підтримку динамічних структур даних (бінарні дерева, зв'язкові списки).

Однак покажчик може викликати і ряд труднощів, наприклад, якщо покажчик містить неправильне значення, програма може бути непрацездатною. Можна легко помилитися при використанні покажчиків; до того ж помилки, пов'язані з неправильними значеннями покажчиків, знайти дуже важко.

Тип покажчика визначає тип об'єкта, на який покажчик буде посилатися, наприклад,

20) Поняття покажчиків і масивів тісно пов'язані. Розглянемо наступний фрагмент програми:

Тут p1 вказує на перший елемент масиву str. Звернутися до п'ятого елементу масиву str можна за допомогою будь-якого з двох виразів:

Схожі статті