Якщо клас пам'яті в операторах оголошення не вказаний, то компілятор визначає його автоматично в залежності від місця його використання. Так змінна проголошена всередині функції інтерпретується компілятором як автоматична (локальна auto) видимість якої залежить від версії, а час існування обмежений часом життя функції. Автоматичні змінні проголошені для версії С++5 видимі від місця оголошення до кінцевого оператора (заключної фігурної дужки), а для версій 3.11.. 4.5 видимість змінних визначається від місця оголошення в складеному операторі до кінцевого оператора (заключної фігурної дужки складеного оператора).
Змінна, певна до функції main (проголошена поза тілом функцій) інтерпретується компілятором як extern (зовнішня), і доступна будь-який функції програми даного файлу. При цьому якщо в програмі водночас присутня локальна і глобальна змінна з одним і тим же ім'ям, то діє правило локалізації ідентифікаторів. Згідно цьому правилу в функції, де визначена локальна змінна, буде недосяжна глобальна змінна з тим же ім'ям.
В залежності від явного або неявного оголошення класу пам'яті static (статична) компілятор С++ реагує по-різному. При явному оголошенні змінних з префіксом static вони містяться в сегменті даних і час їхнього існування обмежений часом виконання програми. При цьому якщо ці змінні проголошені поза функціями, то вони є глобальними і доступні будь-якій функції у межах файлу, де було вироблене оголошення і недосяжні з інших файлів проекту програми. При оголошенні змінних всередині функцій вони також містяться в сегменті даних з тим же часом життя, що і глобальні, але, по суті, вони залишаються локальними і доступні лише всередині функції.
В С++ 5 версії введені більш жорсткі обмеження на область існування змінних. Наприклад, якщо змінна проголошена всередині дужок циклу for, то область існування проголошеної змінної обмежена цим операторним блоком, а для версій нижче С++ 5 область існування простирається від оголошення цієї змінної до кінця файлу. Цей факт призводить до необхідності зміни вхідного тексту програми.
ОРГАНІЗАЦІЯ ВЗАЄМОДІЇ ФУНКЦІЙ У ПРОГРАМІ
Як було визначено вище, елементарною одиницею програми на мові C є функція. Функція визначена для рішення певної задачі різноманітного ступеня складності. Функції, призначені для рішення складних задач, можуть в свою чергу містити звернення до довільного числа функцій, призначених для рішення менш складних задач. Таким чином, рішення задачі на мові C припускає її функціональну декомпозицію, коли функції більш високого рівня забезпечують даними і сприймають результат функцій більш низького рівня.
В C++ визначено декілька засобів передачі параметрів функції і отримання результатів обчислення функції, викликаючою середою. Існує чотири засоби передачі параметрів функції: виклик функції з передачею значень; виклик функції з передачею адрес змінних; виклик функції з використанням механізму заслань при передачі параметрів; шляхом глобальних параметрів.
Виклик функції з передачею значень. Цей засіб передачі параметрів забезпечує передачу копій змінних в стек, що організується при активізації функції. При цьому забезпечується захист самих змінних від їхньої зміни в функції. Приклад:
#include<iostream. h>
int sum (int, int);
void mane (void)
{int a, b, c;
cin >> a >> b;
c=sum (a, b);//передача параметрів значень
cout << c << endl;
}
int sum (int d, int l)
{
int f;
f=d+l;
return f;//результат передається в крапку виклику
}
Виклик функції з передачею адрес. Цей засіб передачі параметрів забезпечує передачу в стек адрес що передаються даними, це дозволяє функції працювати безпосередньо з даними.
#include<iostream. h>
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.