42639

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

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

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

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

Украинкский

2013-10-30

71.5 KB

7 чел.

Лабораторна робота №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


 

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

14528. Сущность, предпосылки, цели и эффекты интеграции 50.5 KB
  Понятие МЭИ. Объективная необходимость и историческая неизбежность МЭИ В условиях интернационализации мировой экономики растет зависимость развития каждой национальной экономики от внешних факторов. Это подтверждается ростом мирового товарооборота объемов ...
14529. Сущность, предпосылки, цели и эффекты интеграции 155.5 KB
  Сущность предпосылки цели и эффекты интеграции 1.Сущность предпосылки цели и эффекты интеграции 2.Теории международной экономической интеграции 3.Главные интеграционные группировки мира 4.Особенности интеграции в Североамериканском регионе 5.Экономическая ин
14530. Теории европейской интеграции 110 KB
  ТЕМА 1. Теории европейской интеграции 1.Понятие интеграции: проблемы дефиниции 2.Теории политической интеграции 3.Социологический подход к изучению европейской интеграции 4.Экономикотеоретический подход к изучению европейской интеграции 5.Правовой подход к изу...
14531. Европейский Суд 127.5 KB
  Европейский Суд Экономический и социальный комитет 3.Комитет регионов Европейского Союза КОР 1.Европейский Суд Европейский Суд без натяжек можно признать стержневым органом в системе институтов ЕС. Но он бы не смог стать таковым если бы не была проявлен
14532. Европейская счетная палата 127.5 KB
  I. Европейская счетная палата 1.СозданииЕвропейской счетной палаты 2.Мандатчленов Европейской счетной палаты. Полномочия. 3.СоставЕвропейской счетной палаты. 4.Организационная структура Европейской счетной палаты 5.Сотрудничествос другими институтами и организ...
14533. Римские Договора 1957 года. Образование Европейского Экономического Сообщества (ЕЭС) и Европейского Сообщества по Атомной Энергетике (Евратома) 30.76 KB
  Римские Договора 1957 года. Образование Европейского Экономического Сообщества ЕЭС и Европейского Сообщества по Атомной Энергетике Евратома Римский договор 1957 года: Создание ЕЭС 25 марта 1957 года в Риме были подписаны договора о создании ЕЭС и Евратома. 1 января 1958 го
14534. БРЮССЕЛЬСКИЙ ДОГОВОР 1965 ГОДА 19.03 KB
  Брюссельский Договор 1965 года В ЕЭС как и в Евратоме были созданы институты почти повторившие те которые существовали в ЕОУС. Существование параллельных институтов в ЕЭС и в Евратоме сразу было признано нецелесообразным. Об этом было заявлено в конвенции принятой в Ри
14535. ПЕРВОЕ РАСШИРЕНИЕ ЕВРОПЕЙСКИХ СООБЩЕСТВ (1973, 1981, И 1986 ГОДА) 19.89 KB
  Первое расширение Европейских Сообществ 1973 1981 и 1986 года Интеграционные процессы в Европе привели к эффективной работе Таможенного Союза который способствовал развитию торговли. Сообщества сумели преодолеть экономические трудности 1970 годов. Бюджет сообществ начал
14536. АМСТЕРДАМСКИЙ ДОГОВОР (1997 ГОД). ПРОБЛЕМЫ ДАЛЬНЕЙШЕГО РАСШИРЕНИЯ И УГЛУБЛЕНИЯ «ИНТЕГРАЦИОННОГО СТРОИТЕЛЬСТВА» 19.74 KB
  Амстердамский Договор 1997 год. Проблемы дальнейшего расширения и углубления Интеграционного Строительства. Маастрихтский договор оставил ряд нерешённых проблем. Разрешить эти проблемы должна была новая межправительственная конференция которая началась в 1996 году. ...