- •20.Операції над вказівниками
- •21. Розподіл памяті
- •22. Списки
- •23. Лінійні списки
- •25.Моделі памяті
- •26. Двійкова, шістнадцяткова системи. Подання чисел в різних системах числення.
- •Переклад чисел з шістнадцяткової системи в десяткову
- •Переклад чисел із двійкової системи в шістнадцяткову та навпаки
- •27. Константи, змінні, типи даних
- •29. Основні оператори: присвоєння , розгалуження, множинний вибір, цикл.
- •До операторів вибору відносять оператор умовного переходу if та оператор-перемикачswitch.
- •Процес розгалуження при обчисленні функції за першою або другою формулами здійснюється умовним оператором if.
- •30. Типи циклів та принципи їх застосування
20.Операції над вказівниками
Операції над вказівниками Унарні адресні операції '&' і '*' мають більш високий пріоритет, ніж арифметичні операції. При використанні адресної операції '* в арифметичних виразах слід остерігатися випадкового поєднання знаків операцій ділення / і розіменування '*', оскільки комбінацію '/*' компілятор сприймає як початок коментаря. Наприклад, вираз а/* і слід замінити таким - а/(*і). Унарні операції '*' і '++' або '--' мають однаковий пріоритет і при розміщенні поряд виконуються справа наліво. Додавання цілочисельного значення n до вказівника, адресуючому деякий елемент масиву, призводить до того, що вказівник набуває значення адреси того елемента, який відстає від поточного на n позицій (елементів). Якщо довжина элемента масиву рівна d байтів, то чисельне значення вказівника змінюється на (d*n). До вказівників застосовуються операції порівняння '>', '>=','! =', '==', '<=', '<'. Таким чином, вказівники можна використовувати у відношеннях. Але порівнювати вказівники допустимо тільки з іншими вказівниками того ж типу або з константою NULL, що позначає значення умовної нулевої адреси. Наведемо приклад, в якому використовуються операції над вказівниками і виводяться значення. Для виводу значень вказівників в рядку формату функції printf використовується специфікація перетворення %р.
21. Розподіл памяті
У комп'ютерній науці, динамічне виділення пам'яті (також відоме як виділення пам'яті на основі купи) є розподілом пам'яті для її використання у комп'ютерній програмі під час виконання цієї програми. Це також може розглядатися як спосіб поширення власності на обмежені ресурси пам'яті між багатьма частинами даних і коду.
Динамічно виділена пам'яті існує, поки її явно не звільнив програміст або збиральник сміття. Це відрізняється від статичного розподілу пам'яті, яка має фіксовану тривалість. Кажуть, що об'єкт, щоб виділяються має динамічний час життя.
Завдання виконання запиту розподілу полягає в знаходженні блока невикористаної пам'яті достатнього розміру.
Проблеми при виконанні запиту розподілу:
Внутрішня і зовнішня фрагментації. Зменшення фрагментації потребує особливої уваги, що робить реалізацію складнішою. Виділення метаданих може збільшити кількість (окремих) малих виділень; Формування блоків(Chunking) намагається зменшити цей ефект.
Як правило, пам'ять виділяється з великого резерву невикористаних областей пам'яті, званої купою. Оскільки точне місце розташування виділених областей не відомо заздалегідь, то доступ до пам'яті є непрямим, як правило, через вказівники. Точний алгоритм, який використовується для організації з виділенням і звільненням областей пам'яті ховається за абстрактним інтерфейсом і може використовуватися будь-яким з методів.
У комп'ютерній науці, динамічне виділення пам'яті (також відоме як виділення пам'яті на основі купи) є розподілом пам'яті для її використання у комп'ютерній програмі під час виконання цієї програми. Це також може розглядатися як спосіб поширення власності на обмежені ресурси пам'яті між багатьма частинами даних і коду.
Динамічно виділена пам'яті існує, поки її явно не звільнив програміст або збиральник сміття. Це відрізняється від статичного розподілу пам'яті, яка має фіксовану тривалість. Кажуть, що об'єкт, щоб виділяються має динамічний час життя.
Завдання виконання запиту розподілу полягає в знаходженні блока невикористаної пам'яті достатнього розміру.
Проблеми при виконанні запиту розподілу:
Внутрішня і зовнішня фрагментації. Зменшення фрагментації потребує особливої уваги, що робить реалізацію складнішою. Виділення метаданих може збільшити кількість (окремих) малих виділень; Формування блоків(Chunking) намагається зменшити цей ефект.
Як правило, пам'ять виділяється з великого резерву невикористаних областей пам'яті, званої купою. Оскільки точне місце розташування виділених областей не відомо заздалегідь, то доступ до пам'яті є непрямим, як правило, через вказівники. Точний алгоритм, який використовується для організації з виділенням і звільненням областей пам'яті ховається за абстрактним інтерфейсом і може використовуватися будь-яким з методів.
