Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
колоквіум.docx
Скачиваний:
5
Добавлен:
18.07.2019
Размер:
35.7 Кб
Скачать

20.Область дії і час життя змінних.

Область дiї _ область коду

програми, в якiй можна використовувати iдентифiкатор.C++ визначає три категорiї областi дiї для будь-якого iдентифiкатора:1. Область дiї класу.2. Локальна область дiї _ це область дiї iдентифiкатора, оголошеного всерединi блоку, пролягає вiд точки оголошення до

кiнця цього блоку.3. Глобальна (або файлова) область дiї _ область дiї iдентифiкатора, оголошеного ззовнi всiх функцiй i класiв, пролягає

вiд точки оголошення до закiнчення всього файлу, що мiстить код програми.

Програма з використанням локальних i глобальних оголошень

#include<iostream.h>*void _Func (float);*const int a=10; //глобальна константа*int b; //глобальна змiнна*int c; //глобальна змiнна*int main ()

{*b=2; //присвоєння глобальнiй змiннiй b*c=4; //присвоєння глобальнiй змiннiй с*_Func (30.8);*return 0;*}* }*void _Func (float c)//перешкода доступу до глобальної с*{*float b; //перешкода доступу до глобальної b

b=4.3; //присвоєння локальнiй змiннiй b*cout<<"a="<<a; //вивiд глобальної змiнної а (10)*cout<<" b="<<b; //вивiд локальної змiнної b (4.3)*cout<<" c="<<c; //вивiд локальної змiнної с (30.8)

} В цьому прикладi функцiя _Func звертається до глобальної кон-

станти a, але оголошує власнi локальнi змiннi b i c. Вивід: a=10 b=4.3 c=30.8.

21. Функції що повертають значення.

Функцiї, що повертають значення, ви-

користовуються в тому випадку, якщо в результатi роботи функцiї

необхiдно отримати тiльки одне значення, яке буде використовува-

тися безпосередньо у виразi. З допомогою iнструкцiї return функцiя

може повертати тiльки одне значення. Тип даних на початку заго-

ловка функцiї оголошує тип цього значення. Вiн називається типом

функцiї, або типом значення функцiї. Функцiя return може не тiль-

ки повертати значення у вигляд константи, але i результат у виглядi

значення функцiї:return (a+4)*10+b+c;.

22.Адреси даних.

Адреси вiдображаються шiстнадцятковими числами i пiд час кожно-

го виконання програми можуть бути рiзними. Для визначення адреси змiнної в пам’ятi, призначена операцiя визначення адреси:&<назва даного>;. У мовi С++ є ще один спосiб визначення адреси даного _ цевказiвник. Вказiвник вказує на початок областi оперативної пам’ятi

комп’ютера, де зберiгається дане.

23.Вказівники.

У мовi С++ є ще один спосiб визначення адреси даного _ це

вказiвник. Вказiвник вказує на початок областi оперативної пам’ятi

комп’ютера, де зберiгається дане. Вказiвники дають змогу оперуватине з iменами даних, а безпосередньо звертатися до областей пам’ятi

комп’ютера. Вказiвник утворюють так:

<тип даного> *<назва вказiвника>;

Можна створювати вказiвники на сталi, змiннi, функцiї, iншi вка-

зiвники тощо. Особливо є ефективною робота з вказiвниками на ряд-

ки i масиви. int *nomer;*(лиш тут щ нового рядку) float *rist, *prtA, *prtB;

Тут оголошено вказiвник на цiлий тип nomer i вказiвники на

дiйснi типи rist, prtA, prtB. Присвоїти значення вказiвникам можна

наступним чином: <назва вказiвника>=<адреса змiнної>;

Нехай у програмi оголошенi змiннi

int n=10;*float stud1, stud2, stud3;

Тодi можна оголосити вказiвники на цi змiннi*nomer=&n;*rist=&stud1;*rist=&stud3; Операції що дозвол. Над вказівниками: ==, ! =, >=, < +, <, >(Порiвнює значення двох вказiвникiв), −(Викор. для визнач. кiлькостi елементiв, якi на-

явнi мiж двома вказiвниками), +, −.

24.Динамічна пам'ять.

Динамічна пам`ять представляє собою масив пронумерованих комірок, які не мають імені; адреса першої такої комірки записана у вказівник. Динамічна пам`ять не очищується до завершення програми. Відповідальність за неї повністю покладається на програміста. Область динамічної пам`яті не може бути використана повторно, поки не буде звільнена явно. Перевагою динамічної пам`яті є те, що доступ до даних в ній можна отримати лише з використанням тих функцій, які володіють доступом до вказівника на динамічну пам`ять. Це дозволяє уникнути випадкової зміни даних.

Если размер объекта или массива заранее неизвестен (например, изображение), или размер объекта слишком большой, чтобы создавать его внутри функции, значит настало время воспользоваться механизмом динамической памяти С++, использующую отдельную область памяти называемой кучей.Для этого вам необходимо знать всего два оператора:

new - выделение памяти, если выделение памяти не произошло возвращается нулевой указатель;

delete - освобождение памяти, не во всех компиляторах после освобождения памяти указателю присваивается 0.