МАРК РЕГНЕРУС ДОСЛІДЖЕННЯ: Наскільки відрізняються діти, які виросли в одностатевих союзах
РЕЗОЛЮЦІЯ: Громадського обговорення навчальної програми статевого виховання ЧОМУ ФОНД ОЛЕНИ ПІНЧУК І МОЗ УКРАЇНИ ПРОПАГУЮТЬ "СЕКСУАЛЬНІ УРОКИ" ЕКЗИСТЕНЦІЙНО-ПСИХОЛОГІЧНІ ОСНОВИ ПОРУШЕННЯ СТАТЕВОЇ ІДЕНТИЧНОСТІ ПІДЛІТКІВ Батьківський, громадянський рух в Україні закликає МОН зупинити тотальну сексуалізацію дітей і підлітків Відкрите звернення Міністру освіти й науки України - Гриневич Лілії Михайлівні Представництво українського жіноцтва в ООН: низький рівень культури спілкування в соціальних мережах Гендерна антидискримінаційна експертиза може зробити нас моральними рабами ЛІВИЙ МАРКСИЗМ У НОВИХ ПІДРУЧНИКАХ ДЛЯ ШКОЛЯРІВ ВІДКРИТА ЗАЯВА на підтримку позиції Ганни Турчинової та права кожної людини на свободу думки, світогляду та вираження поглядів
Контакти
Тлумачний словник Авто Автоматизація Архітектура Астрономія Аудит Біологія Будівництво Бухгалтерія Винахідництво Виробництво Військова справа Генетика Географія Геологія Господарство Держава Дім Екологія Економетрика Економіка Електроніка Журналістика та ЗМІ Зв'язок Іноземні мови Інформатика Історія Комп'ютери Креслення Кулінарія Культура Лексикологія Література Логіка Маркетинг Математика Машинобудування Медицина Менеджмент Метали і Зварювання Механіка Мистецтво Музика Населення Освіта Охорона безпеки життя Охорона Праці Педагогіка Політика Право Програмування Промисловість Психологія Радіо Регилия Соціологія Спорт Стандартизація Технології Торгівля Туризм Фізика Фізіологія Філософія Фінанси Хімія Юриспунденкция |
|
|||||||
Динамічні масиви .В С++ існує зв'язок між вказівниками і масивами, і зв'язок дуже тісний . Будь-який доступ до елемента масиву, який здійснений операцією індексації, може бути виконаний за допомогою вказівника. Варіант з вказівниками в загальному випадку працює швидше, але розібратися в ньому досить важко. Оголошення int а[10]; визначає масив а розміру 10, тобто блок з 10 послідовних об'єктів з іменами а[0], а[1] ..., а[9]. Запис а[i] посилає нас до i-го елемента масиву. Якщо pa є вказівник на int, тобто оголошений як int *pa; то в результаті присвоєння pa = &a[0]; pa вказуватиме на нульовий елемент а, інакше кажучи, pa міститиме адресу елемента а[0]. Тепер присвоєння x = *pa; копіюватиме вміст а[0] в x. Якщо pa указує на деякий елемент масиву, то pa+1 за визначенням вказує на наступний елемент, pa+i - на i-й елемент після pa, а pa-i - на i-й елемент перед pa. Таким чином, якщо pa вказує на а[0], то *(pa+1) є вміст а[1], a+i - адреса а[i], а *(pa+i) - вміст а[i]. Зроблені зауваження вірні незалежно від типу і розміру елементів масиву а. Значення слів "додати 1 до вказівника", як і значення будь-якої арифметики з вказівниками, полягає в тому, щоб pa+1 вказував на наступний об'єкт, а pa+i - на i-й після pa. Між індексацією і діями з покажчиками існує дуже тісний зв'язок. За визначенням значення змінної або вирази типу масив є адреса нульового елемента масиву. Після присвоєння pa = &a[0]; ра і а мають одне і те ж значення. Оскільки ім'я масиву є синонімом розташування його початкового елемента, присвоєння pa=&a[0] можна також записати в наступному вигляді: pa = а; Але а[i] можна записати як *(a+i). Обчислюючи а[i], С++ відразу перетворить його в *(a+i); вказані дві форми запису еквівалентні. З цього виходить що отримані в результаті вживання оператора & записи &a[i] і a+i також будуть еквівалентними, тобто і в тому і в іншому випадку це адреса i-го елемента після а. З другого боку, якщо pa - вказівник, то його можна використовувати з індексом, тобто запис pa[i] еквівалентний запису *(pa+i). Коротше кажучи, елемент масиву можна зображати у як вигляді вказівника із зсувом, так і у вигляді імені масиву з індексом. Між ім'ям масиву і вказівником, виступаючим в ролі імені масиву, існує одна відмінність. Вказівник - це змінна, тому можна написати pa=a або pa++. Але ім'я масиву не є змінним, і записи на зразок a=pa або a++ не допускаються.
Читайте також:
|
||||||||
|