МАРК РЕГНЕРУС ДОСЛІДЖЕННЯ: Наскільки відрізняються діти, які виросли в одностатевих союзах
РЕЗОЛЮЦІЯ: Громадського обговорення навчальної програми статевого виховання ЧОМУ ФОНД ОЛЕНИ ПІНЧУК І МОЗ УКРАЇНИ ПРОПАГУЮТЬ "СЕКСУАЛЬНІ УРОКИ" ЕКЗИСТЕНЦІЙНО-ПСИХОЛОГІЧНІ ОСНОВИ ПОРУШЕННЯ СТАТЕВОЇ ІДЕНТИЧНОСТІ ПІДЛІТКІВ Батьківський, громадянський рух в Україні закликає МОН зупинити тотальну сексуалізацію дітей і підлітків Відкрите звернення Міністру освіти й науки України - Гриневич Лілії Михайлівні Представництво українського жіноцтва в ООН: низький рівень культури спілкування в соціальних мережах Гендерна антидискримінаційна експертиза може зробити нас моральними рабами ЛІВИЙ МАРКСИЗМ У НОВИХ ПІДРУЧНИКАХ ДЛЯ ШКОЛЯРІВ ВІДКРИТА ЗАЯВА на підтримку позиції Ганни Турчинової та права кожної людини на свободу думки, світогляду та вираження поглядів Контакти
Тлумачний словник |
|
|||||||
Лекція №6Тема: Динамічний розподіл пам’яті. Статичні та динамічні масиви.
Мета: Закріплення знань з теми показчики та посилання. Вивчення механізму динамічного керування пам’ятю. Вивчення поняття динамічний масив.
Питання: 1. Поняття динамічного масиву. 2. Виділення пам’яті. 3. Доступ до елементів масиву через показчики. 4. Масиви показчиків. У мові С++ масиви й покажчики зв'язані між собою. При оголошенні масиву у вигляді :int mas [20];ім'я масиву masвизначається як покажчик-константа на перший (нульовий) елемент масиву, тобто на адресу першого елемента масиву &mas[0]. Для доступу до елементів масиву існує два способи: — використання індексу елемента масиву, наприклад, mas[2]або mas[i]; —використання адресного вираження тобто вираження з покажчиком на масив, наприклад, *( mas +2 ) або *( mas+i ). Ім'я масив-покажчик, можна записати в наступному виді:
int mas [20]; int *ptr1; ptr1 = mas; // або ptr1 = &mas[0]; Після оголошення масиву int mas [20]; вираження &mas[0]іmas є еквівалентними. Для обнуління елементів оголошеного масиву досить ініціалізувати його перший елемент: int mas[0] = {0} ; При цьому першому елементу не обов'язково привласнювати значення 0. Якщо в оголошеному масиві ініціалізувати дкілька перших елементів, то інші ініціалізуються нулями. Наприклад, у випадку коли float mas [10] ={ 12.2, 34.56 }; , вісім елементів, що залишилися одержать значення 0. При оголошенні масивів можна використати одну з форм запису : < тип > < ім'я > [n] //Оголошення одномірного // масиву з nелементів < тип > < ім'я > [n] = { значення } //Значення елементів масиву < тип > < ім'я > [ ] = { значення }// розділені комі Наприклад: float m[6]; float m[6] = { 3.4, 4.5, 5.6, 6.7, 8.9, 10.3 }; float m[ ] = { 3.45, 4.56, 5.67, 6.78 }; Двовимірні й багатомірні масиви оголошуються аналогічним образом, тобто правомірний запис :
int mas [2][5] ={ 1, 2, 3, 4, 5, 10, 11, 13, 14, 25 }; int mas [ ][5] ={ 1, 2, 3, 4, 5, 10, 11, 13, 14, 25 }; . При оголошенні одномірних масивів їхній розмір можна не вказувати, якщо оголошений масив відразу ініціалізувати. В оголошенні багатомірних масивів можна опускати кількість індексів тільки першого виміру при одночасній ініціалізації. Якщо під час оголошення масивів ініціалізація не проводиться, то кількість індексів треба вказувати завжди й скрізь. Оскільки для масивів завжди в пам'яті приділяється суцільний блок комірок пам'яті , у яких розташовуються елементи, то адреса наступного елемента mas[1] можна вказати шляхом збільшення покажчика на 1, тобто якщо p = &mas[0] , те p=p + 1 або( p += 1)ідля i елемента масиву адреса може бути визначений як p + i; . При цьому автоматично виконується операція збільшення адреси з урахуванням типу масиву й кількості, що відводить, байт для кожного його елемента, отже : адреса [[i] = адреса x[0] + i* sizeof ( тип ) ; . Якщо два покажчики р1ір2указують на елементи одного масиву, то до них застосовні операції відносини: == , != , < , <= , > , >= . Наприклад, відношення виду р1 < р2 істинно, якщо р1указує на більше ранній елемент, чим р2 . Любою покажчик можна зрівняти з нулем. Варто звернути увагу, що для покажчиків, що посилаються на елементи різних масивів, результат арифметичних операцій і відносин не визначений. В арифметиці з покажчиками можна використати адресу не існуючого "наступні за масивом " елемента. Крім того, до покажчика можна додати деяке ціле значення, наприклад можна записати: р + n ,
де n— ціле значення, а р — покажчик. Це вираження визначає область об'єкта, що займає n -е місце після об'єкта, на який указує р, при цьому nавтоматично множиться на коефіцієнт, дорівнює відповідній довжині об'єкта. Наприклад , якщо intзаймає 4 байти , те цей коефіцієнт дорівнює чотирьом. Допускаються також вирахування покажчиків, що вказують на елементи одного масиву. Наприклад, якщо р1< p2,тер2 - р1+1 — це число елементів масиву від р1дор2включно. Таким чином, з покажчиками допускаються наступні операції : - присвоювання значення одного покажчика іншому; - додавання й вирахування покажчиків і даного цілого типу ( р+5 ); - порівняння двох покажчиків, що посилаються на елементи одного масиву; - присвоювання покажчику нуля й порівняння з нулем. Інші операції з покажчиками заборонені. Для покажчика дозволяються вираження виду:
р1 = mas;або р++ , тут р— покажчик , mas — масив. Розглянемо демонстраційні приклади програм роботи з покажчиками. Читайте також:
|
||||||||
|