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с.


 

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

36259. Обеспечение информационной безопасности. Система обнаружения атак RealSecure: назначение, компоненты, возможности 83.5 KB
  Система обнаружения атак RelSecure: назначение компоненты возможности. Система RelSecure Система обнаружения атак RelSecure разработана американской компанией Internet Security Systems Inc. Система RelSecure это интеллектуальный анализатор пакетов с расширенной базой сигнатур атак который позволяет обнаруживать враждебную деятельность и распознавать атаки на узлы Вашей корпоративной сети. Система RelSecure построена по технологии анализа сетевых пакетов в реальном масштабе времени reltime pcket nlysis относится к...
36260. Аппаратно-программные платформы администрирования. Административная консоль Exchange. Средства мониторинга серверов и трассировки сообщений 92.5 KB
  Средства мониторинга серверов и трассировки сообщений. Внешний вид административной консоли сервера Exchnge Из утилиты администрирования возможно выполнение таких функций как: создание модификация и удаление объектов каталога; создание настройка и удаление коннекторов; настройка синхронизации каталогов и репликации общих папок; контроль за состоянием серверов путем создания и запуска мониторов; установка степени подробности диагностических сообщений; трассировка сообщений; экспорт и импорт объектов...
36261. Службы Windows. Назначение и управление службами. Журнал событий. Планировщик заданий 130 KB
  Отключено Авто или Вручную У службы есть три возможности запуска: Отключено Эта служба никогда не стартует. Вручную Эта служба не будет запущена автоматически но возможен её запуск через другую службу или программу. Оставьте тип запуска Вручную если Вы не подключены к локальной сети.Оставьте его запускаемым Вручную.
36262. Технологии сбора информации 250.5 KB
  Технологии сбора информации. Информационные процессы сбор обработка и передача информации всегда играли важную роль в науке технике и жизни общества. Сбор информации это деятельность субъекта в ходе которой он получает сведения об интересующем его объекте. Обмен информацией это процесс в ходе которого источник информации ее передает а получатель принимает.
36263. Хранение информации. Структура базовой информационной технологии 130 KB
  Хранение информации данных не является самостоятельной фазой в информационном процессе а входит в состав фазы обработки. Различают структурированные данные в которых отражаются отдельные факты предметной области это основная форма представления данных в СУБД и неструктурированные произвольные по форме включающие и тексты и графику и прочие данные. Эта форма представления данных широко используется например в Интернеттехнологиях а сами данные предоставляются пользователю в виде отклика поисковыми системами. Организация того или...
36264. Информационные технологии поиска информации 274.5 KB
  Информационные технологии поиска информации Поиск информации: основные понятия виды и формы организации Поиск информации или информационный поиск представляет один из основных информационных процессов. Цели возможности и характер поиска всегда зависели от наличия информации её важности и доступности а также средств организации поиска. Цель любого поиска заключается в потребности необходимости или желании находить различные виды информации способствующие получению лицом осуществляющим поиск нужных ему сведений знаний и т. Это...
36265. Интерфейсы ИПС. Особенности ИПС глобальных сетей. Поиск в Internet 142.5 KB
  Глобальные поисковые системы в отличие от локальных стремятся объять необъятное по возможности наиболее полно описать ресурсы всего информационного пространства сети Интернет. Следует отметить что поисковые системы WWW весьма оперативно индексируют группы новостей и содержат информацию о статьях реально существующих в сети. Локальные и глобальные сети Internet В зависимости от удаленности компьютеров сети условно разделяют на локальные и глобальные. Произвольная глобальная сеть может включать другие глобальные сети локальные сети а также...
36266. Технологии обработки информации. Распределенная обработка информации. Системы централизованной обработки информации 43 KB
  Технологии обработки информации. Системы централизованной обработки информации. Информационная технология обработки данных предназначена для решения хорошо структурированных задач по которым имеются необходимые входные данные и известны алгоритмы и другие стандартные процедуры их обработки. Режим реализации технологии зависит от объемновременных особенностей решаемых задач: периодичности и срочности требований к быстроте обработки сообщений а также от режимных возможностей технических средств и в первую очередь ЭВМ.
36267. Системы распределенной обработки информации 99 KB
  Возможность взаимодействия вычислительных систем при реализации распределенной обработки информации определяют как их способность к совместному использованию данных или к совместной работе с использованием стандартных интерфейсов. Распределённые системы обработки данных В современных сетевых информационных технологиях всё чаще используют распределённую обработку данных. Под распределённой обработкой данных понимают обработку приложений несколькими территориально разделёнными ЭВМ. При этом в приложениях связанных с обработкой базы данных...