Програмування С, С++теорія та практика (частина 1)
1.9.2 Оголошення та звертання в одновимірних масивах
Форма оголошення одновимірного масиву з явною вказівкою кількості елементів масиву:
тип ім'я_масива [кількість-елементів-масива];
Звертання до елементів одновимірного масиву в загальному випадку можна представити індексуванням, тобто у вигляді
ім'я-масива [вираз];
де ім‘я-масиву - покажчик-константа;
вираз - індекс, число цілого типу; він визначає зсув - збільшення адреси заданого елемента масиву щодо адреси нульового елемента масиву.
Елементи одновимірного масиву розташовуються в ОП підряд: нульовий, перший і т д. Приклад оголошення масиву: іп£ а[10];
іп£ *р = а; /* - р одержує значення а */
При цьому компілятор виділяє масив в стеку ОП розміром (і'І2во/(Туре) * розмір-масиву) байтів.
У вищенаведеному прикладі це 2 * 10 = 20 байтів. Причому а - покажчик-константа, адреса початку масиву, тобто його нульового елемента, р - змінна; змінній р можна присвоїти значення одним із способів: р = а; р = &а[0] ; р = &а[і];
де &а[і] == (а + і) - адреса і-елемента масиву.
Відповідно до правил перетворення типів значення адреси і- елемента масиву на машинному рівні формується таким чином:
&а[і]= а + і * зі2ео£(іп£);
Справедливі також наступні співвідношення:
&а == а+0 == &а[0] - адреса а[0] - нульового елемента масиву; а+2 == &а [2] - адреса а[2] - другого елементи масиву; а+і == &а[і] - адреса а[і] - і-го елемента масиву;
*а==* (а+0) ==* (&а[0]) ==а[0] - значення 0-ого елемента масиву; *(а + 2) == а[2] - значення а[2] - другого елементи масиву;
*(а + і) == а [і] - значення а[і] - і-го елемента масиву;
*а + 2 == а[0] + 2 - сума значень а[0] і 2.
Якщо р - покажчик на елементи такого ж типу, які і елементи масиву а та р=а, то а та р взаємозамінні; при цьому: р == &а[0] == а + 0; р+2 == &а[2] == а + 2;
*(р + 2) == (&а[2]) == а[2] == р[2];
*(р + і) == (&а[і]) == а[і] == р[і];
Для а тар еквівалентні всі звертання до елементів а у вигляді: а[і], * (а+і) , * (і+а) , і[а], та р[і], *(р+і), *(і+р), і[р]
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
