МАРК РЕГНЕРУС ДОСЛІДЖЕННЯ: Наскільки відрізняються діти, які виросли в одностатевих союзах
РЕЗОЛЮЦІЯ: Громадського обговорення навчальної програми статевого виховання ЧОМУ ФОНД ОЛЕНИ ПІНЧУК І МОЗ УКРАЇНИ ПРОПАГУЮТЬ "СЕКСУАЛЬНІ УРОКИ" ЕКЗИСТЕНЦІЙНО-ПСИХОЛОГІЧНІ ОСНОВИ ПОРУШЕННЯ СТАТЕВОЇ ІДЕНТИЧНОСТІ ПІДЛІТКІВ Батьківський, громадянський рух в Україні закликає МОН зупинити тотальну сексуалізацію дітей і підлітків Відкрите звернення Міністру освіти й науки України - Гриневич Лілії Михайлівні Представництво українського жіноцтва в ООН: низький рівень культури спілкування в соціальних мережах Гендерна антидискримінаційна експертиза може зробити нас моральними рабами ЛІВИЙ МАРКСИЗМ У НОВИХ ПІДРУЧНИКАХ ДЛЯ ШКОЛЯРІВ ВІДКРИТА ЗАЯВА на підтримку позиції Ганни Турчинової та права кожної людини на свободу думки, світогляду та вираження поглядів Контакти
Тлумачний словник |
|
||
Використання масивів і покажчиків
У мові С++ масиви і покажчики зв'язані між собою. При оголошенні масиву у вигляді :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[10] = {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 [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; . При цьому автоматично виконується операція збільшення адреси з урахуванням типу масиву і кількості, що відводиться, байт для кожного його елемента, отже : адреса х[і] = адреса x[0] + і*sizeof ( тип ); . Якщо два покажчики р1ір2указують на елементи одного масиву, то до них застосовні операції відносини: == , != , < , <= , > , >= . Наприклад, відношення вигляду р1 < р2 істинно, якщо р1указує на більш ранній елемент, ніж р2 . Всякий покажчик можна порівняти з нулем. Варто звернути увагу, що для покажчиків, що посилаються на елементи різних масивів, результат арифметичних операцій і відносин не визначений. В арифметиці з покажчиками можна використовувати адресу не існуючого "наступного за масивом " елемента. Крім того, до покажчика можна додати деяке ціле значення, наприклад можна записати: р + n ; , де n— ціле значення, а р — покажчик. Цей вираз визначає область об'єкта, що займає n -те місце після об'єкта, на який указує р, при цьому nавтоматично збільшується на коефіцієнт,що дорівнює відповідній довжині об'єкта. Наприклад , якщо intзаймає 4 байти , то цей коефіцієнт дорівнює чотирьом. Допускаються також порівняння покажчиків, що вказують на елементи одного масиву. Наприклад, якщо р1< p2,тор2 - р1+1 — це число елементів масиву від р1дор2включно. Таким чином, з покажчиками допускаються наступні операції : — присвоювання значення одного покажчика іншому; — додавання і вирахування покажчиків і даного цілого типу ( р+5 ); —порівняння двох покажчиків, що посилаються на елементи одного масиву; — присвоювання покажчику нуля і порівняння з нулем. Інші операції з покажчиками заборонені. Для покажчика дозволяються вирази вигляду:
р1 = mas;або р++ ,
тут р— покажчик , mas — масив. Розглянемо демонстраційні приклади програм роботи з покажчиками. Приклад 2.4Обчислити середнє значення додатних елементів одновимірного масиву. Наведемо кілька варіантів програмної реалізації цієї задачі. // P2_7.CPP — обчислення середнього значення // додатних елементів масиву //програма без використання покажчиків #include < iostream> using namespace std; Переглядів: 842 |
Не знайшли потрібну інформацію? Скористайтесь пошуком google: |
© studopedia.com.ua При використанні або копіюванні матеріалів пряме посилання на сайт обов'язкове. |
|