Лабораторна робота № 16. Показники

Мета:

Здобути навики використання середовища розробки мови C++, познайомитися з технікою показників, придбати навички застосування показників при створені програм на мові С++.

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

Показник – це змінна цілого числа, яка містить адресу(номер комірки пам’яті) іншої змінної. Як усяка змінна, показник повинний бути оголошений (об’ялений).

Наприклад:

float a, * aP;

int *iP, I;

char c, *cP;

Оголошені змінні a, I, c різних типів float, int, char і показники aP, iP, cP. Знак * вказує, що це об’явлений показник, і відносяться тільки до наступного ідентифікатору. У принципі ідентифікатор показника може бути будь-яким, але запропонований варіант нагадує програмісту, що ця змінна – показник (pointer).

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

float a = 6, * aP; aP = &a;

int *iP, i = 2; iP = &i;

char c = ‘$’, *cP; cP = &c;

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

float a1; a1 = * aP;

int i1; i1 = *iP;

char c1; c1 = *cP;

У результаті маємо:

a1 = 6.; i1 = 2; c1 = ‘$’;

Ім’я змінної прямо відсилається до її значення, а показник – непрямо. Посилання на значення за допомогою показника називається непрямою (косвенною) адресацією. Операція адресації і разименування взаємно компенсують один одного при їх застосуванні до показника послідовно у будь-якому порядку:

&*aP еквівалентно *&P

До показника застосовується операція cout<<.

Звертає на себе увагу те, що об’ява показника співпадає з формулою разименування, тому її можна рахувати в деякому роді другим, але непрямою об’явою змінної.

Розглянемо програму, де значення показників виводяться у 16-річній системі числення.

//файл PART3\3_01.ccp – зв'язок змінних і показників

#include “c:\CPP\SUBPROG\\roll.h”

#include “c:\CPP\SUBPROG\\roll_txt.h”

#include <iomanip.h>

main() { clrscr();

float a = 16.07, *aP, a1; //об’ява змінних

int i = 2; *iP, i1; //і показників

aP = &a; iP = &I; //адресація

a1 = *aP; i1 = *iP; //разименування

cout<<”\n значення показник значення ‘

<< “\n змінної змінної\n”

<<setw(11)<<a<<” “<<aP<< setw(13)<<a1

<<”\n”<< setw(11)<<i<<” “<<iP<< setw(13)<<i1;

cout<<”\n\n взаєм. компенс. операцій * і &‘

<<”\n &*aP=”<<&*aP

<<”\n *&aP=”<<*&aP;

cout<<”\n кінець задачі “;

pause (0); return 0;}


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: