МАРК РЕГНЕРУС ДОСЛІДЖЕННЯ: Наскільки відрізняються діти, які виросли в одностатевих союзах
РЕЗОЛЮЦІЯ: Громадського обговорення навчальної програми статевого виховання ЧОМУ ФОНД ОЛЕНИ ПІНЧУК І МОЗ УКРАЇНИ ПРОПАГУЮТЬ "СЕКСУАЛЬНІ УРОКИ" ЕКЗИСТЕНЦІЙНО-ПСИХОЛОГІЧНІ ОСНОВИ ПОРУШЕННЯ СТАТЕВОЇ ІДЕНТИЧНОСТІ ПІДЛІТКІВ Батьківський, громадянський рух в Україні закликає МОН зупинити тотальну сексуалізацію дітей і підлітків Відкрите звернення Міністру освіти й науки України - Гриневич Лілії Михайлівні Представництво українського жіноцтва в ООН: низький рівень культури спілкування в соціальних мережах Гендерна антидискримінаційна експертиза може зробити нас моральними рабами ЛІВИЙ МАРКСИЗМ У НОВИХ ПІДРУЧНИКАХ ДЛЯ ШКОЛЯРІВ ВІДКРИТА ЗАЯВА на підтримку позиції Ганни Турчинової та права кожної людини на свободу думки, світогляду та вираження поглядів
Контакти
Тлумачний словник Авто Автоматизація Архітектура Астрономія Аудит Біологія Будівництво Бухгалтерія Винахідництво Виробництво Військова справа Генетика Географія Геологія Господарство Держава Дім Екологія Економетрика Економіка Електроніка Журналістика та ЗМІ Зв'язок Іноземні мови Інформатика Історія Комп'ютери Креслення Кулінарія Культура Лексикологія Література Логіка Маркетинг Математика Машинобудування Медицина Менеджмент Метали і Зварювання Механіка Мистецтво Музика Населення Освіта Охорона безпеки життя Охорона Праці Педагогіка Політика Право Програмування Промисловість Психологія Радіо Регилия Соціологія Спорт Стандартизація Технології Торгівля Туризм Фізика Фізіологія Філософія Фінанси Хімія Юриспунденкция |
|
|||||||
Лекція №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 — масив. Розглянемо демонстраційні приклади програм роботи з покажчиками. Читайте також:
|
||||||||
|