15292

Використання адресної арифметики для роботи з вказівниками

Лабораторная работа

Информатика, кибернетика и программирование

Використання адресної арифметики для роботи з вказівниками Лабораторна робота Тема: Використання адресної арифметики для роботи з вказівниками Мета роботи: Навчитись створювати вказівники описувати їх і задавати; оволодіти основними с

Украинкский

2013-06-11

62 KB

8 чел.

PAGE  2

Використання адресної арифметики для роботи з вказівниками

Лабораторна робота

Тема: Використання адресної арифметики для роботи з вказівниками

Мета роботи: Навчитись створювати вказівники, описувати їх і задавати; оволодіти основними способами роботи з вказівниками в C-програмах,. Визначення адресів елементів масиву з використанням адресної арифметики.

  1.  Короткі теоретичні відомості

Вказівники і масиви. Вказівники і масиви тісно пов’язані. Ім’я масиву без квадратних дужок є вказівником на перший елемент масиву.  Якщо а ім’я масиву, то а – це адреса першого елементу масиву, тобто еквівалентне співвідношення.

&a[0] = = a

Ім’я масиву є постійним вказівником (адресною константою) його не можна змінити і воно (ім’я) є фіксованим протягом виконання програми.

Розміщення елементів масиву в пам’яті.  Елементи масиву розміщаються в пам’яті послідовно один за одним, причому перший елемент розміщається по наймолодшій адресі.

На рис 7 показано співвідношення між адресами розміщених в пам’яті значень для масивів типу short (2 байти) з 6-ти елементів і масиву типу   float (4 байти) з трьох елементів.

short x[6]

float y[3]

Тоді

х= = 1000

&x[0]= =1000

&x[1]= =1002

y= =1250

&y[0]= = 1250

&y[1]= = 1254

Символ х без квадратних дужок і індексу – це адрес першого елемента масиву x[0] і = 1000. Адрес другого елементу масиву  = 1002. В масиві типу float різниця між адресами сусідніх елементів = 4 байти.

При зверненні до елементів масиву з допомогою вказівників, вказівник треба збільшувати на два для перебору елементів типу short і на 4 для перебору елементів типу float.

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

sizeof(int) =4

sizeof(short) =2

sizeof(float) =4

sizeof(char) =1

sizeof(double) =8

Адресна арифметика. Щоб звернутися до будь-якого елементу масиву, вказівник має одержати приріст., кратний розміру елементів масиву. Для цього використовується адресна арифметика.

Інкрементування вказівників. Інкрементувати вказівник – це значить збільшити його значення. Якщо значення вказівника інкрементувати на одиницю, то адресна арифметика автоматично адресу, яку він зберігає, так, щоб він вказував на наступний елемент масиву. Іншими словами, компілятор знає тип вказівника (з його опису) і збільшує збережувану в ньому адресу на довжину елемента даних.

Приклад.

Якщо ptr_to_short є вказівником на якийсь елемент масиву типу short , то оператор

ptr_to_short ++;

збільшує значення ptr_to_short на довжину типу short (2 байти) і вказівник буде вказувати на наступний елемент масиву.

Якщо додати до вказівника число , наприклад 4

 ptr_to_short + =4; то цей оператор пересуне вказівник на 4 елементи (8 ба йтів).

Декрементування вказівників. Все що було сказано по відношенню до операції Інкрементування вказівників відноситься і до операції Декрементування вказівників, тільки в цьому випадку величина вказівника зменшується.

Обчислення зміщення операція з вказівниками. Зміщення – це фактичне віднімання двох вказівників, Якщо є два вказівники на різні елементи одного масиву, то їх можна відняти один від одного і вияснити , на якій відстані  вони знаходяться Адресна арифметика забезпечує автоматичне масштабування результату, і в підсумку відстань виражається в кількості елементів. Якщо ptr1 i ptr2 вказують на елементи одного і того масиву, то вираз ptr1-ptr2 дає відстань між цими елементами.

Вказівники можна також порівнювати. Порівняння має сенс тільки для вказівників на один і той масив. При цьому виконуються операції порівняння = =, !=, <, >, >+, <+.

Молодші елементи масиву, тобто елементи з меншими індексами мають і менші адреси. Якщо ptr1 i ptr2 вказують на елементи одного і того масиву, то співвідношення ptr1 < ptr2 істинне, коли ptr1 вказує на елемент з меншим індексом, ніж ptr2

Операції множення і ділення над вказівниками не виконуються.

Таблиця всіх можливих операцій над вказівниками.

Операції

Опис

Присвоєння

Вказівнику можна присвоїти значення, адрес одержаний операцією &, або взятий з адресної константи (імені масиву)

Посилання на значення

Операція посилання * дає значення, яке знаходиться в змінній, на яку вказується (деколи її називають розіменуванням)

Одержання адреси

Можна використати до вказівника, одержавши вказівник на вказівник. Це заняття 15

Інкрементування

Додавання цілого числа до вказівника дає нову адресу в пам’яті

Декрементування

Віднімання цілого числа до вказівника дає нову адресу в пам’яті

Обчислення зміщення

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

Порівняння

Операція дійсна для вказівників одного і того масиву

Індексний запис і вказівники.  Ім’я масиву без квадратних дужок – це вказівник на перший елемент масиву. Тому до першого елементу можна звертатися з допомогою операції посилання по вказівнику.  Нехай описаний масив  array[].   Тоді вираз *array дасть його перший елемент, *(array +1)   - другий і тє дє . Тоді можна записати такі співвідношення.

*(array)== array[0]

*(array +1)   == array[1]

*(array +2)   == array[2]

………………………………

*(array +n)   == array[n]

Це зв’язок між зверненням до масиву по індексу і через операції з вказівниками.

  1.  Постановка завдання

Описати і задати 2 масиви типу short і int розмірністю 10. Вивести на екран адреси всіх елементів обох масивів.

Описати і задати 2 масиви типу int і float розмірністю 7. Вивести на екран значення всіх елементів обох масивів з використанням адресної арифметики.

Описати і задати 2 масиви типу float i char розмірністю 5.. Вивести на екран адреси всіх елементів обох масивів.

Описати і задати 3 масиви типу char, int і float розмірністю 4. Вивести на екран значення всіх елементів обох масивів з використанням адресної арифметики

Описати 3 масиви типу char, short і int розмірністю 8. Вивести на екран адреси всіх елементів трьох масивів з використанням адресної арифметики.

Описати і задати 2 масиви типу int і float розмірністю 7. Вивести на екран значення всіх елементів обох масивів з використанням адресної арифметики.

Описати 3 масиви типу char, short і int розмірністю 8. Вивести на екран адреси всіх елементів трьох масивів.

Описати і задати 3 масиви типу char, int і float розмірністю 4. Вивести на екран значення всіх елементів обох масивів з використанням адресної арифметики.

Описати 3 масиви типу char, short і float розмірністю 6. Вивести на екран адреси всіх елементів трьох масивів з використанням адресної арифметики.

Описати і задати 2 масиви типу int і float розмірністю 7. Вивести на екран значення всіх елементів обох масивів з використанням адресної арифметики

Описати і задати 2 масиви типу int і float розмірністю 5. Вивести на екран адреси всіх елементів обох масивів з використанням адресної арифметики.

. Описати і задати 2 масиви типу int і float розмірністю 7. Вивести на екран значення всіх елементів обох масивів з використанням адресної арифметики.

. Описати і задати 2 масиви типу int і float розмірністю 8. Вивести на екран адреси всіх елементів обох масивів з використанням адресної арифметики.

. Описати і задати 2 масиви типу int і float розмірністю 7. Вивести на екран значення всіх елементів обох масивів з використанням адресної арифметики.

  1.  Методичні вказівки

  1.  Уважно прочитати умову задачі з індивідуального завдання. Визначити, що має бути отримано в результаті її розв'язку, які дані для цього потрібно ввести.
  2.  Використати знання про вказівники, операції над ними, правила адресної арифметики.
  3.  Для вводу й виводу даних використати бібліотеку функцій    <stdіo.h>.
  4.  Ввести текст програми. Звернути увагу на типи даних, що будуть використані в програмі.
  5.  Запустити програму на компіляцію. У  випадку необхідності виправити синтаксичні помилки.
  6.  Запустити програму на виконання. У  випадку необхідності виправити семантичні помилки.
  7.  Реалізувати програму для різних вхідних даних.
  8.  Результати роботи програми вивести на екран.

  1.  Зміст звіту

  1.  Постановка завдання.
  2.  Програма розв’язку завдання.
  3.  Результати  роботи програми.
  4.  Повідомлення про некоректно введені дані..
  5.  Результати всіх реалізацій програми;
  6.  Зміни, що зроблено в програмі, та результати виконання модифікованої програми
  7.  Висновок, в якому зазначити, наскільки розроблена програма відповідає умові задачі, як можна її вдосконалити.
  8.  Пояснення результатів.

  1.  Контрольні запитання

  1.  Який знак операції використовується для одержання адресу змінної?
    1.  Який знак операції використовується для одержання значення по адресу, що зберігається у вказівнику?
      1.  Що таке посилання по вказівнику?
        1.  Що таке вказівник?
        2.  Які операції можна виконувати над вказівниками.

  1.  Джерела інформації

  1.  Громов Ю.Ю., Татаренко С.И. Программирование на языке Си: Учебное пособие. - Тамбов, 1995. - 169с.
  2.  Подбельский В.В., Фомин С.С., Программирование на языке Си. М.: Финансы и статистика, 1999. .– 600с.
  3.  Керниган Б.В., Ричи Д.М. Язык программирования Си. \Пер. с англ., 3-е изд., испр.- СПб.: “Невский Диалект”, 2001. – 352с.
  4.  Бредли Л. Джонс, Питер Єйткен, Освой самостоятельно С за 21 день, 6-е изд.: Пер. З англ. — М.: Издательский дом "Вильямс", 2003.- 800с.
  5.  Культин Н., С/C++  в задачах и примерах. Санк-Петербург: "БХВ Петербург", 2004.
  6.  Бірюльов К.Ю., Дещинський Ю.Л., Селемонавічус А.А., Хавалко В.М., Худий А.М., Якимів Ю.Б. Методичний посібник «Конспект лекцій з дисципліни Системне програмування».-М.: Львів, 2005. – 149с.


 

А также другие работы, которые могут Вас заинтересовать

69217. Статистика оплати праці 50.5 KB
  Оплата праці - сполучний елемент між державою, підприємством і окремою особою; це стимул до зростання продуктивності праці; один з елементів витрат на виробництво продукції; рівень матеріального добробуту працівників.
69218. Статистика основных фондов 28 KB
  ОПФ это здания сооружения передаточные устройства машины и оборудование транспортные средства производственный инвентарь и принадлежности хозяйственный инвентарь рабочий и продуктивный скот многолетние сады и насаждения капитальные затраты по улучшению земель...
69219. Статистичні показники 158 KB
  Статистичний показник це кількісна характеристика соціальноекономічних явищ та процесів в умовах якісного визначення тобто це міра якісного і кількісного відображення певної властивості соціальноекономічного явища чи процесу.
69220. Статистика продукції 138.5 KB
  Промислова продукція - це прямий корисний результат промислово-виробничої діяльності підприємства (фірми), виражений у формі продуктів або виробничих послуг. Отже, звідси: продукція є результатом діяльності підприємства, тому сировина та матеріали, що ще не вступили у виробництво...
69221. Статистичне спостереження, його суть, форми та помилки 112 KB
  Форми статистичного спостереження його види та способи проведення. Програмно методологічні та організаційні питання статичного спостереження. Помилки статистичного спостереження та заходи щодо їх усунення.
69222. Вибірковий метод 437 KB
  Причини і умови застосування та організації вибіркового спостереження. Так для визначення втрат при збиранні урожаю суцільне спостереження потребує значних затрат часу та коштів а при перевірці якості продукції наприклад жирності молока схожості зерна його не можна провести...
69223. Статистичні методи вивчення взаємозв’язків 398.5 KB
  Кореляційно-регресійний аналіз звязку його завдання і основні етапи. Оцінка щільності та істотності кореляційного звязку. При функціональному звязку кожному можливому значенню факторної ознаки відповідає чітко визначене значення результативної ознаки тобто...
69224. Статистичне вивчення динаміки соціально-економічних явищ 507.5 KB
  Для будь-якого динамічного ряду характерні перелік хронологічних дат моментів або інтервалів часу і конкретні значення відповідних статистичних показників які називають рівнями ряду. Приймаючи будь-який інтервал за одиницю послідовність рівнів можна записати так: де число рівнів довжина динамічного ряду.
69225. Предмет, метод та завдання статистики 187.5 KB
  Статистика - самостійна суспільна наука, яка має свій предмет и метод дослідження. Виникла вона з практичної необхідності суспільного життя. Уже в давньому світі з’явилась необхідність підраховувати чисельність жителів держави; рахувати людей, пригодних до військової справи...