Головна

Операції над покажчиками

  1. Абстрактні операції технологічного процесу підготовки ЛА
  2. Активні (інвестиційні) операції КБ з цінними паперами.
  3. арифметичні операції
  4. арифметичні операції
  5. Арифметичні »операції з моделями
  6. Б. Елементи теорії множин, операції над множинами, квантори
  7. Банківська система РФ і місце в ній комерційних банків. Операції, ліквідність, групи комерційних банків РФ.

Крім уже розглянутих операцій, з покажчиками можна виконувати арифметичні операції додавання, инкремента (++), віднімання, декремента (-) і операції порівняння.

Арифметичні операції з покажчиками автоматично враховують розмір типу величин, адресованих покажчиками. Ці операції застосовні тільки до покажчиків одного типу і мають сенс в основному при роботі зі структурами даних, послідовно розміщеними в пам'яті, наприклад з масивами.

Інкремент переміщує покажчик до наступного елементу масиву, декремент - до попереднього.

Покажчик, таким чином, може використовуватися у виразах вигляду

p # iv, ## p, p ##, p # = iv,

p - Покажчик, iv - Цілочисельне вираз, # - символ операції '+' або '-'.

Результатом таких виразів є збільшене або зменшене значення покажчика на величину iv * sizeof(* p), Т. Е. Якщо покажчик на певний тип збільшується або зменшується на константу, його значення змінюється на величину цієї константи, помножену на розмір об'єкта даного типу.

Поточне значення покажчика завжди посилається на позицію деякого об'єкту в пам'яті з урахуванням правил вирівнювання для відповідного типу даних. Таким чином, значення p # iv вказує на об'єкт того ж типу, розташований в пам'яті зі зміщенням на iv позицій.

При порівнянні покажчиків можуть використовуватися відносини будь-якого виду («>», «<» і т. Д.), Але найбільш важливими видами перевірок є відносини рівності і нерівності («==», «! =»).

Відносини порядку мають сенс тільки для покажчиків на послідовно розміщені об'єкти (елементи одного масиву).

Різниця двох покажчиків дає число об'єктів адресується ними типу у відповідному діапазоні адрес, т. Е. В застосуванні до масивів різниця покажчиків, наприклад, на третій і шостий елементи дорівнює 3.

Очевидно, що зменшуваний і віднімається покажчики повинні належати одному масиву, інакше результат операції не має практичної цінності і може привести до непередбачуваного результату. Те ж можна сказати і про підсумовуванні покажчиків.

Значення покажчика можна вивести на екран за допомогою функції printf, Використовуючи специфікацію%p (pointer), Результат виводиться в шістнадцятковому вигляді.

Розглянемо фрагмент програми:

int a = 5, * p, * p1, * p2;

p = & a;

p2 = p1 = p;

++ P1;

p2 + = 2;

printf ("a =% d, p =% d, p =% p, p1 =% p, p2 =% p. \ n", a, * p, p, p1, p2);

Результат може бути наступним:

a = 5, * p = 5, p = FFF4, p1 = FFF6, p2 = FFF8.

Графічно це виглядає наступним чином (в 16-розрядному процесорі на тип int відводиться 2 байти):

   FFF5  FFF7  FFF9  
   FFF4р  FFF6p1  FFF8p2  FFF10  
                   

p = FFF4,

p1 = FFF6 = (FFF4 + 1 * sizeof (* p)) ® FFF4 + 2 (int)

р2 = FFF8 = (FFF4 + 2 * sizeof (* p)) ® FFF4 + 2 * 2

На одну і ту ж область пам'яті (як видно з наведеного прикладу), може посилатися кілька покажчиків різного типу. Але застосована до них операція разадресаціі дасть різні результати.

При змішуванні в вираженні покажчиків різних типів явне перетворення типів потрібно для всіх покажчиків, крім void *.

Явна приведення типів покажчиків дозволяє отримати адресу об'єкта будь-якого типу:

type * p;

p = (type *) & object;

значення покажчика p дозволяє працювати зі змінною object як об'єктом типу type.

ініціалізація покажчиків | Зв'язок покажчиків і масивів


| Корисні приклади | Оператор циклу з передумовою і корекцією for | Оператори continue, break і return | Поради з програмування | ЗАВДАННЯ 2. Розгалужуються алгоритми | Другий рівень складності | Перший рівень складності | Другий рівень складності | визначення покажчиків |

© 2016-2022  um.co.ua - учбові матеріали та реферати