Студопедия
Новини освіти і науки:
МАРК РЕГНЕРУС ДОСЛІДЖЕННЯ: Наскільки відрізняються діти, які виросли в одностатевих союзах


РЕЗОЛЮЦІЯ: Громадського обговорення навчальної програми статевого виховання


ЧОМУ ФОНД ОЛЕНИ ПІНЧУК І МОЗ УКРАЇНИ ПРОПАГУЮТЬ "СЕКСУАЛЬНІ УРОКИ"


ЕКЗИСТЕНЦІЙНО-ПСИХОЛОГІЧНІ ОСНОВИ ПОРУШЕННЯ СТАТЕВОЇ ІДЕНТИЧНОСТІ ПІДЛІТКІВ


Батьківський, громадянський рух в Україні закликає МОН зупинити тотальну сексуалізацію дітей і підлітків


Відкрите звернення Міністру освіти й науки України - Гриневич Лілії Михайлівні


Представництво українського жіноцтва в ООН: низький рівень культури спілкування в соціальних мережах


Гендерна антидискримінаційна експертиза може зробити нас моральними рабами


ЛІВИЙ МАРКСИЗМ У НОВИХ ПІДРУЧНИКАХ ДЛЯ ШКОЛЯРІВ


ВІДКРИТА ЗАЯВА на підтримку позиції Ганни Турчинової та права кожної людини на свободу думки, світогляду та вираження поглядів



Зв’язок між покажчиками та масивами

У мові С між покажчиками і масивами існує тісний зв'язок. Наприклад, коли з'являється масив у виді int array[25], то цим визначається не тільки виділення пам'яті для двадцяти п'яти елементів масиву, але і для покажчика з ім'ям array, значення якого дорівнює адресі першого (нульового) елемента масиву, тобто сам масив залишається безіменним, а доступ до елементів масиву здійснюється через покажчик з ім'ям array. З погляду синтаксису мови покажчик array є константою, значення якої можна використовувати у виразах, але змінити це значення не можна.

Оскільки ім'я масиву є покажчиком, те припустимо, наприклад, таке присвоювання:

int array[25];

int *ptr;

ptr=array;

Тут покажчик ptr установлюється на адресу першого елемента масиву, причому присвоювання ptr=arrey можна записати в еквівалентній формі ptr=&arrey[0].

Для доступу до елементів масиву існує два різних способи.

Перший спосіб зв'язаний з використанням звичайних індексних виразів у квадратних дужках, наприклад, array[16]=3 або array[і+2]=7. При такому способі доступу записуються два вирази, причому другий вираз розташовується в квадратних дужках. Один з цих виразів повинен бути покажчиком, а другий - виразом цілого типу. Послідовність запису цих виражень може бути будь-якою, але в квадратних дужках записується вираз, який іде другим. Тому записи array[16] і 16[array] будуть еквівалентними і позначають елемент масиву з номером шістнадцять.

Покажчик, використовуваний в індексному виразі не обов'язково повинний бути константою, що вказує на який-небудь масив, це може бути і змінна. Зокрема після виконання присвоювання ptr=array доступ до шістнадцятого елемента масиву можна одержати за допомогою покажчика ptr у формі ptr[16] або 16[ptr].

Другий спосіб доступу до елементів масиву зв'язаний з використанням адресних виразів і операції розадресації у формі *(array+16)=3 або *(array+і+2)=7. При такому способі доступу адресне вираження рівне адресі шістнадцятого елемента масиву теж може бути записано різними способами *(array+16) або *(16+array).

При програмній реалізації перший спосіб приводиться до другого, тобто індексне вираження перетвориться до адресного. Для приведених прикладів array[16] і 16[array] перетворяться в *(array+16).

Для доступу до початкового елемента масиву (тобто до елемента з нульовим індексом) можна використовувати просте значення покажчика array або ptr. Кожне з присвоювань

*array = 2;

array[0] = 2;

*(array+0) = 2;

*ptr = 2;

ptr[0] = 2;

*(ptr+0) = 2;

присвоює початковому елементові масиву значення 2, але швидше всього виконується присвоювання *array=2 і *ptr=2, тому що в них не потрібно виконувати операції додавання.




Переглядів: 540

<== попередня сторінка | наступна сторінка ==>
ТЕОРЕТИЧНА ЧАСТИНА | Покажчики на багатовимірні масиви.

Не знайшли потрібну інформацію? Скористайтесь пошуком google:

  

© studopedia.com.ua При використанні або копіюванні матеріалів пряме посилання на сайт обов'язкове.


Генерація сторінки за: 0.003 сек.