SlideShare a Scribd company logo
1 of 19
Лекція № 12
Передача параметрів у функцію. .
1
Національний технічний університет
України «КИЇВСЬКИЙ ПОЛІТЕХНИЧНИЙ
ІНСТИТУТ імені ІГОРЯ СІКОРСЬКОГО
Кафедра інформаційних систем та
технологій
Лектор
Проскура СвІтлана Леонідівна
slproskura@gmail.com
ПРОГРАМУВАННЯ-1. ОСНОВИ ПРОГРАМУВАННЯ
План
1. Області видимості. Локальна глобальна області
видимості.
2. Способи передачі параметрів у підпрограми, особливості
реалізації.
3. . Функції з аргументами за замовчуванням, особливості їх
реалізації у С/С++.
4. Використання вказівників та посилань при роботі з
функціями. Вказівники, як аргументи функцій. Програмний
стек
Вказівник Посилання
Об’явлення вказівника , наприклад int *p Для об’явлення посилання використовується оператор
посилання &.
Пам’ять під посилання в ОЗП не виділяється
Ініціалізація вказівника – а саме привласнити йому значення
адреси будь-якого об’єкта , наприклад:
int a = 10 ; p = & a ;
int *p = & a
При об’явленні посилання необхідно обов'язково задати
иніціалізуючий вираз, псевдонімом якого і буде посилання.
Int Count = 0; int& RefCount = Count;
Унарний оператор & видає адресу об'єкту, так що інструкція p =
& a ; привласнює адресу комірки змінної а вказівнику p
(говорять , що р посилається на а )
Оператор & застосовується тільки до об'єктів, розташованих в
пaмяті. Його операндом не може бути ні вираз, ні константа
Як тільки ця ініціалізація виконана, посилатися на інші змінні
вже не можна. Тобто після визначення посилання
завжди"дивиться" на ту ділянку пам'яті(на той об'єкт), з яким
вона зв'язана ініціалізацією.
Іншими словами, після визначення посилання не може бути
ніяким способом "відірвано" від об'єкта ініціалізації і пов'язано
з іншим об'єктом.
Розіменування вказівника – це унарний оператор * (непряма
адресація ). Розіменування дає можливість працювати з об’єктом
через вказівник.
Жодна з операційне дієна посилання, а відноситьсядо того
об'єкту, з яким вона зв'язана. Таким чином, посилання повністю
аналогічнt вихідного імені об'єкта.
Унарні оператори * і & мають вищий пріоритет, ніж арифметичні
оператори, так що зустрівши привласнення y=*p+1 компілятор
візьме те, на що указує р і додасть до нього 1, а результат
привласнить змінній у.
Аналогічно *p+=1 збільшує на одиницю те, на що посилається p;
ті ж дії виконують ++*p і (*p)++.
У останньому записі дужки необхідні, оскільки, якщо їх не буде,
збільшиться значення самого покажчика, а не те, на що він
посилається. Це обумовлено тим, що унарні оператори * та
Існують деякі обмеження використання операції посилання&,
зокрема запам'ятайте три "не можна":
1.Не можна виконувати посилання на посилання.
int a;
int&&ra=a;//помилка
2.Не можна створювати масив посилань.
int a;
int & ra [10];//помилка
3.Не можна створювати покажчик на посилання.
❖Кожний ідентифікатор у програмі має свою область дії імені,
або область видимості.
❖Область видимості ідентифікатора — це область
програми, в межах якої на цей ідентифікатор можна
посилатися.
❖Послідовність і кількість блоків, у яких іменуються ті чи інші
об’єкти, можуть бути довільними.
❖Області дії ідентифікатора:
● вираз,
● блок,
● функція,
● файл,
● програма
❖У загальному випадку область дії іменування поширюється
від точки, де ідентифікатор було оголошено, до кінця блока.
❖Кінцем блока вважають праву фігурну дужку }
Локалізація імен
Усі ідентифікатори, оголошені всередині функції, є
локалізованими в ній, тобто ззовні підпрограми вони є
невидимими.
Окрім власних локальних імен усередині функції видимими є
також ідентифікатори верхнього рівня, тобто
ідентифікатори, оголошені поза будь-якою функцією.
Такі ідентифікатори називають глобальними
змінна
2
Функція1
функція2
змінн
а1
Локалізація імен
Різні об'єкти можна іменувати однаково, але в різних
програмних блоках.
В оголошеннях тієї самої підпрограми або програми усі
імена мають бути різними.
Локалізація імен
Клас пам’яті змінної визначає її область дії, час життя та
простір імен .
Час життя ідентифікатора — це період, протягом якого цей
ідентифікатор існує в оперативній пам’яті.
<клас пам’яті> <тип> <ім’я>;
Ідентифікатор може бути неодноразово створений та знищений, може існувати
протягом усього часу роботи програми, або в межах певного блока.
Визначено чотири класи пам’яті:
auto, register, extern, static.
Синтаксис оголошення класу пам’яті змінних:
Класи пам’яті
Специфікатор auto використовують для оголошення
змінних автоматичного класу пам’яті.
Змінні автоматичного класу пам’яті є змінними з локальним
часом життя.
До цього класу пам’яті належать локальні змінні та
параметри функцій.
Локальні змінні є змінними автоматичного класу пам’яті за
умовчанням, тому специфікатор аuto для них явно не
вказують.
Класи пам’яті
Специфікатор
register
застосовують
під час
оголошення
автоматичної
змінної, аби
вказати
компілятору на
необхідність
зберігання
змінної не в
оперативній
пам’яті, а в
регістрі
процесора.
Функції одного файлу можуть
звертатися до змінних, визначених
в інших файлах, якщо ці змінні
було оголошено з ключовим
словом extern, тобто якщо вони є
зовнішніми. Змінні створюються на
початку роботи програми,
зберігають свої значення
протягом її роботи і знищуються
лише після завершення роботи
програми. Специфікатор extern
повідомляє компілятор про те, що
відповідна змінна
оголошуватиметься в будьякому
місці програми.
Статичні змінні
записують із
ключовим
словом static.
На відміну від
автоматичної
статична
змінна не
створюється
автоматично і
не знищується
після виходу з
функції.
Класи пам’яті
Область оперативної пам'яті, що її використовує програма,
поділяється на:
● сегмент коду,
● сегмент даних
● сегмент стеку.
● В сегменті коду — зберігаються команди програми,
● в сегменті даних — значення глобальних змінних,
● в сегменті стеку — значення локальних змінних і параметрів
підпрограм.
Розподіл оперативної пам’яті
В С/C++ параметри поділяються на:
❖параметри-значення,
❖параметри-посилання,
❖параметри-покажчики
❖параметри-константи.
Різновиди параметрів
Різновиди параметрів
Передача параметрів
за значенням За адресою через вказівник За адресою через посилання
void square ( int x )
{
x = x * x;
}
void main ()
{
int a = 10 ;
square ( a );
cout << a;
}
void square ( int *x )
{
*x = *x * ( *x ) ;
}
void main (
{
int a = 10 ;
square ( &a ) ;
cout << a;
}
void square( int &x )
{
x = x * x ;
}
void main ( )
{
int a = 10 ;
square ( a ) ;
cout << a; //виведе 100
}
Cпособи передачі параметрів у функцію
Під час виклику підпрограми:
1. Обчислюється значення відповідного аргументу
2. Копія отриманого результату передається підпрограмі.
3. Зміна параметрів-значень усередині підпрограми не впливає
на значення змінних, що вказані як аргументи підпрограми,
оскільки змінюються їх копії.
4. Повернення з функції переданого значення не відбувається
Передача параметрів-значень
Сегмент коду Сегмент стеку
Сегмент даних
Копія
NameVariable
1234
NameVarible
Передача параметрів-змінних
1. До підпрограми передається покажчик на параметр, тобто
адреса певної змінної в сегменті даних оперативної пам'яті.
2. Підпрограма виконує дії над значеннями параметрів-
змінних, а не над їх копіями,
3. Модифікація параметра-змінної приводить до модифікації
змінної, що вказана як аргумент в операторі виклику
підпрограми.
4. Параметри-змінні використовуються у процедурах з метою
повернення отриманих під час виконання підпрограми значень
до точки її виклику.
Сегмент коду Сегмент стеку
Сегмент даних
1234
NameVarible
46С7:СЕ7Е
5678
Адреса
NameVariable
46С7:СЕ7Е
Передача параметрів-змінних
Параметри-значення оголошують як звичайні локальні змінні в
списку параметрів підпрограми.
Під час виклику підпрограми копія аргумента передається
підпрограмі.
Якщо параметр оголошено як параметр-посилання чи параметр-
покажчик, то підпрограмі передається адреса аргументу — змінної
в сегменті даних оперативної пам’яті.
Параметр-посилання оголошується через операцію адресації &.
Параметр-покажчик оголошується через операцію *
Підпрограма виконує дії над значеннями змінних, а не над їх
копіями, і модифікація параметра-посилання чи параметра-
покажчика приведе до модифікації змінної, що була вказана як
аргумент в операторі виклику підпрограми.
Передача параметрів-змінних
Якщо значення, що передаються у функцію, не повинні
змінюватися, навіть при виконанні дій над копією аргументу,
параметр оголошують із ключовим словом const.
Такий параметр називають параметр-константа.
Значення параметра-константи не можна змінювати в тілі
підпрограми.
1. Якщо оперативної пам’яті недостатньо і термін
виконання програми є важливим фактором, то слід
використовувати параметри-покажчики.
2. З метою захисту даних від випадкових змін слід
передавати параметри як параметри-значення.
Рекомендації
1. Виконання основної програми починається після завантаження
її коду в оперативну пам'ять комп'ютера.
2. Змінні, які доступні з програми протягом усього часу її
виконання, називаються статичними.
3. Область пам'яті, що виділяється під програму та її змінні, також
називається статичною.
4. Із локальними іменами і параметрами-значеннями підпрограм,
як правило, зіставляються ділянки іншої області пам'яті –
автоматичної.
5. Під час виконання викликів підпрограм пам'ять виділяється та
звільняється автоматично, без явних вказівок у програмі.
6. Локальні змінні доступні тільки під час виконання відповідної
підпрограми.
Програмний стек
7. Виділення та звільнення ділянок пам'яті під час виконання
викликів підпрограм відбувається за принципом «останнім
прийшов – першим пішов» (з англійської «Last In – First Out»
або скорочено LIFO).
Така структура називається стеком (stack).
Автоматична пам'ять, що виділяється для підпрограм,
називається програмним стеком.
Last In
Програмний стек
First Out
Дякую за увагу!!!!

More Related Content

Similar to Лекція №12 Передача параметрів у функцію.pptx

"Distributed graphs and microservices in Prom.ua", Maksym Kindritskyi
"Distributed graphs and microservices in Prom.ua",  Maksym Kindritskyi"Distributed graphs and microservices in Prom.ua",  Maksym Kindritskyi
"Distributed graphs and microservices in Prom.ua", Maksym KindritskyiFwdays
 
календарне планування 11 клас. інформатика
календарне планування 11 клас. інформатикакалендарне планування 11 клас. інформатика
календарне планування 11 клас. інформатикаТетяна Шверненко
 
Semantic Coding and Microformats
Semantic Coding and  MicroformatsSemantic Coding and  Microformats
Semantic Coding and MicroformatsQuintagroup
 
07 Localisation
07 Localisation07 Localisation
07 Localisationolegapster
 
Загальні принципи розроблення АРМ оператора на базі SCADA/HMI
Загальні принципи розроблення АРМ оператора на базі SCADA/HMIЗагальні принципи розроблення АРМ оператора на базі SCADA/HMI
Загальні принципи розроблення АРМ оператора на базі SCADA/HMIПупена Александр
 
Урок 54 8 клас
Урок 54 8 класУрок 54 8 клас
Урок 54 8 класssuser737e7f
 
06 Pointers To Class Members
06 Pointers To Class Members06 Pointers To Class Members
06 Pointers To Class Membersolegapster
 
опорні схеми
опорні схемиопорні схеми
опорні схемиIrina Tabanets
 
тема 7
тема 7тема 7
тема 7cit-cit
 
Урок 26. Елементи керування “кнопка”. Поняття об’єкту та його властивостей і ...
Урок 26. Елементи керування “кнопка”. Поняття об’єкту та його властивостей і ...Урок 26. Елементи керування “кнопка”. Поняття об’єкту та його властивостей і ...
Урок 26. Елементи керування “кнопка”. Поняття об’єкту та його властивостей і ...Василь Тереховський
 
урок 19 цикли Складання програм
урок 19 цикли Складання програмурок 19 цикли Складання програм
урок 19 цикли Складання програмHelen Pat
 

Similar to Лекція №12 Передача параметрів у функцію.pptx (20)

General Functors ...
General Functors                                                             ...General Functors                                                             ...
General Functors ...
 
"Distributed graphs and microservices in Prom.ua", Maksym Kindritskyi
"Distributed graphs and microservices in Prom.ua",  Maksym Kindritskyi"Distributed graphs and microservices in Prom.ua",  Maksym Kindritskyi
"Distributed graphs and microservices in Prom.ua", Maksym Kindritskyi
 
календарне планування 11 клас. інформатика
календарне планування 11 клас. інформатикакалендарне планування 11 клас. інформатика
календарне планування 11 клас. інформатика
 
Semantic Coding and Microformats
Semantic Coding and  MicroformatsSemantic Coding and  Microformats
Semantic Coding and Microformats
 
Design patterns part 2
Design patterns part 2Design patterns part 2
Design patterns part 2
 
07 Localisation
07 Localisation07 Localisation
07 Localisation
 
Загальні принципи розроблення АРМ оператора на базі SCADA/HMI
Загальні принципи розроблення АРМ оператора на базі SCADA/HMIЗагальні принципи розроблення АРМ оператора на базі SCADA/HMI
Загальні принципи розроблення АРМ оператора на базі SCADA/HMI
 
9 14
9 149 14
9 14
 
Урок 54 8 клас
Урок 54 8 класУрок 54 8 клас
Урок 54 8 клас
 
06 Pointers To Class Members
06 Pointers To Class Members06 Pointers To Class Members
06 Pointers To Class Members
 
7_1611.pptx
7_1611.pptx7_1611.pptx
7_1611.pptx
 
опорні схеми
опорні схемиопорні схеми
опорні схеми
 
Урок 44. Цикл з післяумовою
Урок 44. Цикл з післяумовоюУрок 44. Цикл з післяумовою
Урок 44. Цикл з післяумовою
 
тема 7
тема 7тема 7
тема 7
 
Design patterns part 1
Design patterns part 1Design patterns part 1
Design patterns part 1
 
Урок 26. Елементи керування “кнопка”. Поняття об’єкту та його властивостей і ...
Урок 26. Елементи керування “кнопка”. Поняття об’єкту та його властивостей і ...Урок 26. Елементи керування “кнопка”. Поняття об’єкту та його властивостей і ...
Урок 26. Елементи керування “кнопка”. Поняття об’єкту та його властивостей і ...
 
L l13
L l13L l13
L l13
 
1
11
1
 
урок 19 цикли Складання програм
урок 19 цикли Складання програмурок 19 цикли Складання програм
урок 19 цикли Складання програм
 
tsql
tsqltsql
tsql
 

Recently uploaded

Бомбочки для ванни своїми руками презентація
Бомбочки для ванни своїми руками презентаціяБомбочки для ванни своїми руками презентація
Бомбочки для ванни своїми руками презентаціяssuser0a4f48
 
Відкрита лекція на тему «Біологічний захист рослин у теплицях»
Відкрита лекція на тему «Біологічний захист рослин у теплицях»Відкрита лекція на тему «Біологічний захист рослин у теплицях»
Відкрита лекція на тему «Біологічний захист рослин у теплицях»tetiana1958
 
Бібліотека – розвиток дитячої творчості та дозвілля для дітейpptx
Бібліотека – розвиток дитячої творчості  та дозвілля для дітейpptxБібліотека – розвиток дитячої творчості  та дозвілля для дітейpptx
Бібліотека – розвиток дитячої творчості та дозвілля для дітейpptxssuserc301ed1
 
О.Духнович - пророк народної правди. Біографія
О.Духнович - пророк народної правди. БіографіяО.Духнович - пророк народної правди. Біографія
О.Духнович - пророк народної правди. БіографіяAdriana Himinets
 
Відкрита лекція на тему «Контроль бур'янів в посівах соняшника»
Відкрита лекція на тему «Контроль бур'янів в посівах соняшника»Відкрита лекція на тему «Контроль бур'янів в посівах соняшника»
Відкрита лекція на тему «Контроль бур'янів в посівах соняшника»tetiana1958
 
Принципові відмінності досконалої (повної) конкуренції від інших форм організ...
Принципові відмінності досконалої (повної) конкуренції від інших форм організ...Принципові відмінності досконалої (повної) конкуренції від інших форм організ...
Принципові відмінності досконалої (повної) конкуренції від інших форм організ...JurgenstiX
 
Р.Шеклі "Запах думки". Аналіз оповідання
Р.Шеклі "Запах думки". Аналіз оповіданняР.Шеклі "Запах думки". Аналіз оповідання
Р.Шеклі "Запах думки". Аналіз оповіданняAdriana Himinets
 
Презентациія для сайта Група «Незабудка».pptx
Презентациія для сайта Група «Незабудка».pptxПрезентациія для сайта Група «Незабудка».pptx
Презентациія для сайта Група «Незабудка».pptxOlgaDidenko6
 
upd.18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23_FINAL.pdf
upd.18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23_FINAL.pdfupd.18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23_FINAL.pdf
upd.18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23_FINAL.pdfssuser54595a
 
Хімічні елементи в літературних творах 8 клас
Хімічні елементи в літературних творах 8 класХімічні елементи в літературних творах 8 клас
Хімічні елементи в літературних творах 8 класkrementsova09nadya
 
Застосування Гайду безбар’єрності в роботі закладів культури громад Одещини.pdf
Застосування Гайду безбар’єрності в роботі закладів культури громад Одещини.pdfЗастосування Гайду безбар’єрності в роботі закладів культури громад Одещини.pdf
Застосування Гайду безбар’єрності в роботі закладів культури громад Одещини.pdfssuser15a891
 

Recently uploaded (13)

Бомбочки для ванни своїми руками презентація
Бомбочки для ванни своїми руками презентаціяБомбочки для ванни своїми руками презентація
Бомбочки для ванни своїми руками презентація
 
Відкрита лекція на тему «Біологічний захист рослин у теплицях»
Відкрита лекція на тему «Біологічний захист рослин у теплицях»Відкрита лекція на тему «Біологічний захист рослин у теплицях»
Відкрита лекція на тему «Біологічний захист рослин у теплицях»
 
Бібліотека – розвиток дитячої творчості та дозвілля для дітейpptx
Бібліотека – розвиток дитячої творчості  та дозвілля для дітейpptxБібліотека – розвиток дитячої творчості  та дозвілля для дітейpptx
Бібліотека – розвиток дитячої творчості та дозвілля для дітейpptx
 
О.Духнович - пророк народної правди. Біографія
О.Духнович - пророк народної правди. БіографіяО.Духнович - пророк народної правди. Біографія
О.Духнович - пророк народної правди. Біографія
 
Відкрита лекція на тему «Контроль бур'янів в посівах соняшника»
Відкрита лекція на тему «Контроль бур'янів в посівах соняшника»Відкрита лекція на тему «Контроль бур'янів в посівах соняшника»
Відкрита лекція на тему «Контроль бур'янів в посівах соняшника»
 
Принципові відмінності досконалої (повної) конкуренції від інших форм організ...
Принципові відмінності досконалої (повної) конкуренції від інших форм організ...Принципові відмінності досконалої (повної) конкуренції від інших форм організ...
Принципові відмінності досконалої (повної) конкуренції від інших форм організ...
 
Її величність - українська книга презентація-огляд 2024.pptx
Її величність - українська книга презентація-огляд 2024.pptxЇї величність - українська книга презентація-огляд 2024.pptx
Її величність - українська книга презентація-огляд 2024.pptx
 
Р.Шеклі "Запах думки". Аналіз оповідання
Р.Шеклі "Запах думки". Аналіз оповіданняР.Шеклі "Запах думки". Аналіз оповідання
Р.Шеклі "Запах думки". Аналіз оповідання
 
Презентациія для сайта Група «Незабудка».pptx
Презентациія для сайта Група «Незабудка».pptxПрезентациія для сайта Група «Незабудка».pptx
Презентациія для сайта Група «Незабудка».pptx
 
upd.18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23_FINAL.pdf
upd.18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23_FINAL.pdfupd.18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23_FINAL.pdf
upd.18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23_FINAL.pdf
 
Віртуальна виставка нових надходжень 2-24.pptx
Віртуальна виставка нових надходжень 2-24.pptxВіртуальна виставка нових надходжень 2-24.pptx
Віртуальна виставка нових надходжень 2-24.pptx
 
Хімічні елементи в літературних творах 8 клас
Хімічні елементи в літературних творах 8 класХімічні елементи в літературних творах 8 клас
Хімічні елементи в літературних творах 8 клас
 
Застосування Гайду безбар’єрності в роботі закладів культури громад Одещини.pdf
Застосування Гайду безбар’єрності в роботі закладів культури громад Одещини.pdfЗастосування Гайду безбар’єрності в роботі закладів культури громад Одещини.pdf
Застосування Гайду безбар’єрності в роботі закладів культури громад Одещини.pdf
 

Лекція №12 Передача параметрів у функцію.pptx

  • 1. Лекція № 12 Передача параметрів у функцію. . 1 Національний технічний університет України «КИЇВСЬКИЙ ПОЛІТЕХНИЧНИЙ ІНСТИТУТ імені ІГОРЯ СІКОРСЬКОГО Кафедра інформаційних систем та технологій Лектор Проскура СвІтлана Леонідівна slproskura@gmail.com ПРОГРАМУВАННЯ-1. ОСНОВИ ПРОГРАМУВАННЯ
  • 2. План 1. Області видимості. Локальна глобальна області видимості. 2. Способи передачі параметрів у підпрограми, особливості реалізації. 3. . Функції з аргументами за замовчуванням, особливості їх реалізації у С/С++. 4. Використання вказівників та посилань при роботі з функціями. Вказівники, як аргументи функцій. Програмний стек
  • 3. Вказівник Посилання Об’явлення вказівника , наприклад int *p Для об’явлення посилання використовується оператор посилання &. Пам’ять під посилання в ОЗП не виділяється Ініціалізація вказівника – а саме привласнити йому значення адреси будь-якого об’єкта , наприклад: int a = 10 ; p = & a ; int *p = & a При об’явленні посилання необхідно обов'язково задати иніціалізуючий вираз, псевдонімом якого і буде посилання. Int Count = 0; int& RefCount = Count; Унарний оператор & видає адресу об'єкту, так що інструкція p = & a ; привласнює адресу комірки змінної а вказівнику p (говорять , що р посилається на а ) Оператор & застосовується тільки до об'єктів, розташованих в пaмяті. Його операндом не може бути ні вираз, ні константа Як тільки ця ініціалізація виконана, посилатися на інші змінні вже не можна. Тобто після визначення посилання завжди"дивиться" на ту ділянку пам'яті(на той об'єкт), з яким вона зв'язана ініціалізацією. Іншими словами, після визначення посилання не може бути ніяким способом "відірвано" від об'єкта ініціалізації і пов'язано з іншим об'єктом. Розіменування вказівника – це унарний оператор * (непряма адресація ). Розіменування дає можливість працювати з об’єктом через вказівник. Жодна з операційне дієна посилання, а відноситьсядо того об'єкту, з яким вона зв'язана. Таким чином, посилання повністю аналогічнt вихідного імені об'єкта. Унарні оператори * і & мають вищий пріоритет, ніж арифметичні оператори, так що зустрівши привласнення y=*p+1 компілятор візьме те, на що указує р і додасть до нього 1, а результат привласнить змінній у. Аналогічно *p+=1 збільшує на одиницю те, на що посилається p; ті ж дії виконують ++*p і (*p)++. У останньому записі дужки необхідні, оскільки, якщо їх не буде, збільшиться значення самого покажчика, а не те, на що він посилається. Це обумовлено тим, що унарні оператори * та Існують деякі обмеження використання операції посилання&, зокрема запам'ятайте три "не можна": 1.Не можна виконувати посилання на посилання. int a; int&&ra=a;//помилка 2.Не можна створювати масив посилань. int a; int & ra [10];//помилка 3.Не можна створювати покажчик на посилання.
  • 4. ❖Кожний ідентифікатор у програмі має свою область дії імені, або область видимості. ❖Область видимості ідентифікатора — це область програми, в межах якої на цей ідентифікатор можна посилатися. ❖Послідовність і кількість блоків, у яких іменуються ті чи інші об’єкти, можуть бути довільними. ❖Області дії ідентифікатора: ● вираз, ● блок, ● функція, ● файл, ● програма ❖У загальному випадку область дії іменування поширюється від точки, де ідентифікатор було оголошено, до кінця блока. ❖Кінцем блока вважають праву фігурну дужку } Локалізація імен
  • 5. Усі ідентифікатори, оголошені всередині функції, є локалізованими в ній, тобто ззовні підпрограми вони є невидимими. Окрім власних локальних імен усередині функції видимими є також ідентифікатори верхнього рівня, тобто ідентифікатори, оголошені поза будь-якою функцією. Такі ідентифікатори називають глобальними змінна 2 Функція1 функція2 змінн а1 Локалізація імен
  • 6. Різні об'єкти можна іменувати однаково, але в різних програмних блоках. В оголошеннях тієї самої підпрограми або програми усі імена мають бути різними. Локалізація імен
  • 7. Клас пам’яті змінної визначає її область дії, час життя та простір імен . Час життя ідентифікатора — це період, протягом якого цей ідентифікатор існує в оперативній пам’яті. <клас пам’яті> <тип> <ім’я>; Ідентифікатор може бути неодноразово створений та знищений, може існувати протягом усього часу роботи програми, або в межах певного блока. Визначено чотири класи пам’яті: auto, register, extern, static. Синтаксис оголошення класу пам’яті змінних: Класи пам’яті
  • 8. Специфікатор auto використовують для оголошення змінних автоматичного класу пам’яті. Змінні автоматичного класу пам’яті є змінними з локальним часом життя. До цього класу пам’яті належать локальні змінні та параметри функцій. Локальні змінні є змінними автоматичного класу пам’яті за умовчанням, тому специфікатор аuto для них явно не вказують. Класи пам’яті
  • 9. Специфікатор register застосовують під час оголошення автоматичної змінної, аби вказати компілятору на необхідність зберігання змінної не в оперативній пам’яті, а в регістрі процесора. Функції одного файлу можуть звертатися до змінних, визначених в інших файлах, якщо ці змінні було оголошено з ключовим словом extern, тобто якщо вони є зовнішніми. Змінні створюються на початку роботи програми, зберігають свої значення протягом її роботи і знищуються лише після завершення роботи програми. Специфікатор extern повідомляє компілятор про те, що відповідна змінна оголошуватиметься в будьякому місці програми. Статичні змінні записують із ключовим словом static. На відміну від автоматичної статична змінна не створюється автоматично і не знищується після виходу з функції. Класи пам’яті
  • 10. Область оперативної пам'яті, що її використовує програма, поділяється на: ● сегмент коду, ● сегмент даних ● сегмент стеку. ● В сегменті коду — зберігаються команди програми, ● в сегменті даних — значення глобальних змінних, ● в сегменті стеку — значення локальних змінних і параметрів підпрограм. Розподіл оперативної пам’яті
  • 11. В С/C++ параметри поділяються на: ❖параметри-значення, ❖параметри-посилання, ❖параметри-покажчики ❖параметри-константи. Різновиди параметрів
  • 12. Різновиди параметрів Передача параметрів за значенням За адресою через вказівник За адресою через посилання void square ( int x ) { x = x * x; } void main () { int a = 10 ; square ( a ); cout << a; } void square ( int *x ) { *x = *x * ( *x ) ; } void main ( { int a = 10 ; square ( &a ) ; cout << a; } void square( int &x ) { x = x * x ; } void main ( ) { int a = 10 ; square ( a ) ; cout << a; //виведе 100 } Cпособи передачі параметрів у функцію
  • 13. Під час виклику підпрограми: 1. Обчислюється значення відповідного аргументу 2. Копія отриманого результату передається підпрограмі. 3. Зміна параметрів-значень усередині підпрограми не впливає на значення змінних, що вказані як аргументи підпрограми, оскільки змінюються їх копії. 4. Повернення з функції переданого значення не відбувається Передача параметрів-значень Сегмент коду Сегмент стеку Сегмент даних Копія NameVariable 1234 NameVarible
  • 14. Передача параметрів-змінних 1. До підпрограми передається покажчик на параметр, тобто адреса певної змінної в сегменті даних оперативної пам'яті. 2. Підпрограма виконує дії над значеннями параметрів- змінних, а не над їх копіями, 3. Модифікація параметра-змінної приводить до модифікації змінної, що вказана як аргумент в операторі виклику підпрограми. 4. Параметри-змінні використовуються у процедурах з метою повернення отриманих під час виконання підпрограми значень до точки її виклику. Сегмент коду Сегмент стеку Сегмент даних 1234 NameVarible 46С7:СЕ7Е 5678 Адреса NameVariable 46С7:СЕ7Е
  • 15. Передача параметрів-змінних Параметри-значення оголошують як звичайні локальні змінні в списку параметрів підпрограми. Під час виклику підпрограми копія аргумента передається підпрограмі. Якщо параметр оголошено як параметр-посилання чи параметр- покажчик, то підпрограмі передається адреса аргументу — змінної в сегменті даних оперативної пам’яті. Параметр-посилання оголошується через операцію адресації &. Параметр-покажчик оголошується через операцію * Підпрограма виконує дії над значеннями змінних, а не над їх копіями, і модифікація параметра-посилання чи параметра- покажчика приведе до модифікації змінної, що була вказана як аргумент в операторі виклику підпрограми.
  • 16. Передача параметрів-змінних Якщо значення, що передаються у функцію, не повинні змінюватися, навіть при виконанні дій над копією аргументу, параметр оголошують із ключовим словом const. Такий параметр називають параметр-константа. Значення параметра-константи не можна змінювати в тілі підпрограми. 1. Якщо оперативної пам’яті недостатньо і термін виконання програми є важливим фактором, то слід використовувати параметри-покажчики. 2. З метою захисту даних від випадкових змін слід передавати параметри як параметри-значення. Рекомендації
  • 17. 1. Виконання основної програми починається після завантаження її коду в оперативну пам'ять комп'ютера. 2. Змінні, які доступні з програми протягом усього часу її виконання, називаються статичними. 3. Область пам'яті, що виділяється під програму та її змінні, також називається статичною. 4. Із локальними іменами і параметрами-значеннями підпрограм, як правило, зіставляються ділянки іншої області пам'яті – автоматичної. 5. Під час виконання викликів підпрограм пам'ять виділяється та звільняється автоматично, без явних вказівок у програмі. 6. Локальні змінні доступні тільки під час виконання відповідної підпрограми. Програмний стек
  • 18. 7. Виділення та звільнення ділянок пам'яті під час виконання викликів підпрограм відбувається за принципом «останнім прийшов – першим пішов» (з англійської «Last In – First Out» або скорочено LIFO). Така структура називається стеком (stack). Автоматична пам'ять, що виділяється для підпрограм, називається програмним стеком. Last In Програмний стек First Out