42639

ДОСЛІДЖЕННЯ ВКАЗІВНИХ ТИПІВ ДАНИХ

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

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

Значення змінної покажчика може бути присвоєно іншому покажчикові якщо їх типи є ідентичними. Покажчикові може бути присвоєно пусте значення null яке вказує на абстрактний неіснуючий обєкт. Розіменування дозволяє отримати доступ до значення обєкту на якій вказує покажчик. Розмір значення змінної залежить від її типу.

Украинкский

2013-10-30

71.5 KB

9 чел.

Лабораторна робота №4.

ДОСЛІДЖЕННЯ ВКАЗІВНИХ ТИПІВ ДАНИХ

Теоретичні відомості

Програмні об’єкти розташовуються у пам’яті комп’ютера. Пам’ять комп’ютеру складається з діапазону комірок, які мають унікальні адреси, що складають адресний простір. Будь-яка комірка пам’яті, що адресується, може, як правило, зберігати один байт (8 біт) інформації. Програмні об’єкти можуть займати одну або більше комірок. Адреса першої комірки об’єкта є його адресою.

Існує спеціальний тип для зберігання адрес – вказівний. Змінна-покажчик може бути типізованою або нетипізованою. Типізований покажчик може містити тільки адресу об’єкта відповідного типу. Нетипізований покажчик можу адресувати об’єкт будь-якого типу.  

Значення змінної покажчика може бути присвоєно іншому покажчикові, якщо їх типи є ідентичними. Зміст нетипізованого покажчика може бути присвоєно будь-якому покажчику. Покажчикові може бути присвоєно «пусте» значення (null), яке вказує на абстрактний неіснуючий об’єкт.

Наприклад:

Паскаль:

ipA : ^integer; \\ опис типізованого покажчика ipA

rpB : ^real;  \\ опис типізованого покажчика rpB

pC : Pointer;  \\ опис нетипізованого покажчика pC

Сі:

int *ipA;

float *fpB;

void *pC;

Існують дві основні операції роботи з покажчиками: взяття адреси та розіменування. Адреса програмного об’єкта може бути отримана за допомогою спеціальної операції – взяття адреси. Адресу об’єкта певного типу може бути присвоєно тільки покажчику того ж типу або нетипизованому покажчику. Розіменування дозволяє отримати доступ до значення об’єкту, на якій вказує покажчик. Розіменування підтримується тільки для типізованих покажчиків.  

Розмір значення змінної залежить від її типу. Для визначення розміру певного значення змінної чи розміру будь-якого значення певного типу в мовах програмування існує спеціальна базова операція sizeof.

Наприклад:

Паскаль:

ipA := @iCount;  \\ взяття адреси цілої змінної iCount

rpB := @rR;    \\ взяття адреси дійсної змінної rR 

pC := nil;   \\ ініціалізація покажчика pC нулем

\\ розіменування ipA та збереження отриманого значення у цілій змінній iK

iK := ipA^;

\\ встановлення значення, на яке посилається ipA, рівним значенню iK

ipA^ := iK;

iSize := sizeof (integer); \\ визначення розміру значень типу integer

iSize := sizeof (iK);  \\ визначення розміру значення iK

Сі:

ipA = & iCount;

fpB = &fR;

pC = null;

iK = * ipA;

* ipA = iK;

iSize = sizeof (int);

iSize = sizeof (iK);

Використання нетипізованих вказівних змінних

Таблиця 6

pointer

void*

не можна

не можна

розіменувати

розіменувати

U = v

U = &v

можна

можна

p := @U

v = &U

p := U

v = U

p := p

v = v

new p

v = new size

U := p;

U := @p

Примітка. U – типізована вказівна змінна; p, v - нетипізовані вказівні змінні.

Завдання

Написати програми на мовах Паскаль та Сі, які складаються з наступних дій:

  1.  Опису змінних напередвизначених типів, які наведені у варіанті (табл.7).
  2.  Опису вказівних змінних відповідних типів (табл.7).
  3.  Опису нетипізованої вказівної змінної.
  4.  Ініціювання вказівних змінних адресами змінних, що описанні в п.1 даного завдання.
  5.  Ініціювання змінних, що описанні в п.1 даного завдання, значеннями з варіанта, використовуючи операцію розіменування вказівних змінних.
  6.  Визначення розміру всіх змінних вашої програми.
  7.  Ініціювання нетипізованої вказівної змінної адресами типізованих вказівних змінних.
  8.  Опису посилання (тільки в мові Сі).

Таблиця 7

№ варіанта

Word

unsigned short

Integer

int

Real

float

Double

double

п

с

п

с

п

с

п

с

1

120

-4986

234.9877775

3.4e-55

2

52

886

-414.5435

12.4e35

3

177

-189

84.353535

-2.6e13

4

87

11239

-532.98987

3.9e-41

5

1400

-386

4.4525

-7.3e23

6

6692

1226

-896.333333

6.9e-86

7

10

-528

654.9962

-4.5e25

8

380

265

-21.5437711

99.9e-220

9

612

-805

14.4328

-30.22e100

10

45671

167

-3.9412

-6.8e-6

11

27

-4852

135.7907

7.4e66

12

503

98

-247.11113

5.8e-336

13

9040

-267

0.007642

-1.11e99

14

43

5124

-8976.04

3.5e-4

15

524

-61

25.7295

-0.53e-707


 

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

22325. Протоколи локальних мереж 44 KB
  Протоколи це просто правила які визначають як саме відбуватиметься взаємодія і потрібні як для локальних так і для глобальних мереж. Деякі протоколи підтримують маршрутизацію що означає що разом з даними також передаються відомості про їх джерело і точку призначення. Якщо можливе існування одного шляху між джерелом і точкою призначення як це часто має місце в локальних мережах і навіть в глобальних мережах використовування таких протоколів не необхідне.
22326. Адресація в IP-мережах 107.5 KB
  Для вузлів що входять в локальні мережі це МАСадреса мережного адаптера або порту маршрутизатора наприклад 11А0173DBC01. Для вузлів що входять в глобальні мережі такі як Х.25 або frame relay локальна адреса призначається адміністратором глобальної мережі.
22327. Вимоги, що предявляються до сучасних обчислювальних мереж 84.5 KB
  Хоча всі ці вимоги вельми важливі часто поняття якість обслуговування Quality Service QoS комп'ютерної мережі потрактує більш вузько в нього включаються тільки дві найважливіші характеристики мережі продуктивність і надійність. Незалежно від вибраного показника якості обслуговування мережі існують два підходи до його забезпечення. Перший підхід очевидно покажеться найприроднішим з погляду користувача мережі. Технології frame relay і ATM дозволяють будувати мережі що гарантують якість обслуговування по продуктивності.
22328. Використання вінка Мережа і вилучений доступ до мережі. 58.5 KB
  Розкрійте дерево Мій комп'ютер клацнувши на знаку . Змінювати параметри ідентифікації комп'ютера в мережі. Додавати мережні компоненти. Створення нового мережного підключення Якщо у вашому комп'ютері встановлений мережний адаптер який у свою чергу підключений до локальної мережі коли ви встановлювали Windows 2000 Professional в системі вже повинно бути набудовано працююче мережне підключення так в Windows 2000 називається локальна мережа хоча воно може бути ще не до кінця набудовано.
22329. Робота з вікном Моє мережне оточення 30 KB
  І навіть якщо з вікном Мережне оточення ви не знайомі все одно у вас не повинне виникнути жодних проблем. Вікно Моє мережне оточення це тека яка пропонує ряд параметрів для поглядання комп'ютерів у вашій робочій групі або всій мережі. У вікно Моє мережне оточення ви навіть можете додавати ярлики для часто відвідуваних вами тек або Webсторінок.
22330. Пошук в мережі 37 KB
  Загальний доступ до дисків Коли ви надаєте загальний доступ до диска ви дозволяєте іншим користувачам працювати з його вмістом по мережі. Клацніть правою кнопкою миші на значку диска до якого вирішили надати загальний доступ і виберіть команду Доступ з контекстного меню що з'явилося. На екрані відобразиться діалогове вікно властивостей диска з вибраною вкладкою Доступ. В діалоговому вікні властивостей жорсткого диска виберіть перемикач Загальний доступ.
22331. Адреса и указатели. Операции получения адреса и косвенной адресации. Отождествление массивов и указателей. Адресная арифметика 46.5 KB
  Динамическое выделение памяти под массивы. АДРЕСА И УКАЗАТЕЛИ Во время выполнения всякой программы используемые ею данные размещаются в оперативной памяти ЭВМ причем каждому элементу данных ставится в соответствие его индивидуальный адрес. При реализации многих алгоритмов и представлении сложных логических структур данных часто оказывается полезной возможность непосредственной работы с адресами памяти. Действительно поскольку соседние элементы массива располагаются в смежных ячейках памяти то для перехода от одного его...
22332. Функции в языке Си. Формальные и фактические параметры. Механизм передачи параметров. Возвращаемые значения. Использование указателей в качестве аргументов функций 44.5 KB
  ФУНКЦИИ В ЯЗЫКЕ СИ. Каждая из них в свою очередь есть независимый набор описаний и операторов заключенных между заголовком функции и ее концом. Все объекты определенные в теле функции ограниченном открывающей и закрывающей фигурными скобками являются локальными для этой функции в смысле области видимости и времени существования.
22333. Ввод и вывод в языке Си: общие концепции. Файлы данных и каталоги файлов. Внутренняя организация и типы файлов 76 KB
  h main { FILE stream; if stream = fopen data r == NULL printf Ошибка при открытии файла ; } Имя функции и назначение: fclose закрывает файл предварительно открытый для ввода вывода потоком Формат и описание аргументов: int fclosestream FILE stream; Указатель на открытый файл Возвращаемое значение равно нулю при нормальном завершении операции и EOF в случае возникновения ошибки.h...