C++. Поняття змінної. Оголошення змінної. Локальні та глобальні змінні. Виділення пам’яті для змінних. Константи

Поняття змінної. Оголошення змінної. Локальні та глобальні змінні. Операція розширення області видимості ::. Виділення пам’яті для змінних. Константи


Зміст


Пошук на інших ресурсах:

 
1. Що називається змінною?

Змінна (variable) у програмі – це іменована комірка пам‘яті, яка призначена для зберігання деякого значення. Збережене значення може бути результатом обчислення виразу, числовою чи рядковою константою тощо.

При розробці програми, програміст на власний розсуд дає імена змінним. Ім‘я змінної є іменем ідентифікатора. Це ім‘я повинно відповідати синтаксису мови C/C++. Більш детально про імена змінних описується в темі:

Для розв‘язку задачі, програміст може використовувати будь-яку кількість змінних у програмі. Найчастіше змінні використовуються у виразах при проведенні обчислень.

Бажано, щоб ім’я змінної відповідало її призначенню у програмі.

Наприклад, якщо змінна використовується для зберігання деякого максимального значення, тоді її ім’я може бути Max.

У мові C/C++ кожна змінна повинна мати власний тип. Більш детально про типи даних C/C++ описується в статті:

2. Який загальний вигляд опису змінної в C/C++?

Загальний вигляд опису змінної:

тип список_змінних;

де

  • тип – тип даних, що відповідає змінним із список_змінних;
  • список_змінних – перелік змінних заданого типу, розділених комою.

Змінна може мати до 1024 символи будь-якого імені.

Приклад оголошення змінних різних типів.

int a, b, c;
char sym;
bool f_is;
float x, y;
double z;

3. В яких місцях програми можна оголошувати змінні? Як класифікуються змінні в залежності від місця оголошення в програмі?

Змінні можуть бути оголошені:

  • всередині функцій;
  • у визначенні параметрів функцій;
  • за межами усіх функцій.

В залежності від місця оголошення в програмі, змінні класифікуються наступним чином:

  • локальні змінні (оголошуються всередині функцій);
  • формальні параметри (є параметрами функцій);
  • глобальні змінні (оголошуються за межами функцій).


4. Що таке локальні змінні? В яких місцях програми оголошуються локальні змінні?

Локальні змінні – це змінні, які оголошені (описані) всередині функцій. Доступ до таких змінних мають тільки оператори, що використовуються в тілі функції.

Локальні змінні створюються в момент виклику функції. Як тільки виконання функції завершується, локальні змінні знищуються.

Приклад. Нехай дано функцію GetMax3(), що визначає максимальне значення між трьома числами. У функції описується локальна змінна res. Область дії змінної визначена фігурними дужками { }.

...

int GetMax3(int a, int b, int c)
{
    int res; // res - локальна змінна
    res = a;
    if (res<b) res = b;
    if (res<c) res = c;
    return res;
}

...

5. Що означає термін “знищення змінної”?

Локальні змінні створюються в момент виклику функції. Як тільки виконання функції завершується, локальні змінні знищуються.

Термін “знищення змінної” означає: знищення змінної в оперативній пам’яті після завершення функції, в якій ця змінна була оголошена.

6. Що означає термін “формальний параметр”?

Формальний параметр – це змінна, яка є вхідним параметром функції. При виклику функції, їй передаються аргументи.

Значення цих аргументів копіюються у формальні параметри функції у порядку їх виклику.

Формальні параметри оголошуються після імені функції всередині круглих дужок ( ).

Приклад. Нехай дано оголошення функції GetMax3(), яка знаходить максимальне значення між трьома цілими числами.

...

// Оголошення функції GetMax3
int GetMax3(int a, int b, int c)
{
    // a, b, c - формальні параметри
    int res; // res - локальна змінна
    res = a;
    if (res<b) res = b;
    if (res<c) res = c;
    return res;
}

...

// Виклик функції GetMax3() з іншого програмного коду
max = GetMax3(8, 5, 11); // числа 8, 5, 11 є аргументами функції

...

У даному прикладі, у функції GetMax3() є 3 формальні параметри з іменами a, b, c. При виклику функції з іншого програмного коду їй передаються 3 числа (аргументи), які копіюються у формальні параметри. Число 8 копіюється в формальний параметр a. Число 5 копіюється у формальний параметр b. Число 11 копіюється у формальний параметр c.

7. Що таке глобальні змінні? Яка відмінність між глобальними та локальними змінними?

Глобальна змінна – це змінна, доступ до якої мають усі функції в програмі. Глобальні змінні зберігають свої значення на протязі усього часу виконання програми. Цей час називається часом життя глобальної змінної.

Глобальна змінна оголошується за межами усіх функцій.

Приклад. У даному прикладі оголошено глобальну змінну max та дві функції GetMax2() та GetMax3().

...

int max; // max - глобальна змінна

// Оголошення функції GetMax2
int GetMax2(int a, int b)
{
    // a, b - формальні параметри
    max = a; // використання глобальної змінної max у функції GetMax2()
    if (max<b) max = b;
    return max;
}

// Оголошення функції GetMax3
int GetMax3(int a, int b, int c)
{
    // a, b, c - формальні параметри
    max = a; // використання глобальної змінної max у функції GetMax3()
    if (max<b) max = b;
    if (max<c) max = c;
    return max;
}

8. Приклади оголошення змінних різних типів

 

int a, b, c;
char sym;
bool f_is;
float x, y;
double z;

9. Як виділяється пам‘ять для змінних цілочисельних типів?

При оголошенні змінної для неї виділяється пам’ять. Розмір пам’яті, що виділяється, залежить від типу змінної. Розмір виділеної пам’яті впливає на діапазон значень, які може приймати змінна.

Для змінних цілих типів виділяється пам’ять відповідно до таблиць.

Для 16-розрядного середовища.

Для 32-розрядного середовища.

Починаючи з версії C++ 11 було введено два нові цілочисельні типи даних: long long та unsigned long long. При оголошенні змінної одним з цих типів виділяється 64 біти (8 байт) пам’яті.

Діапазон значень для типу long long становить 

-9223372036854775808 ... 9223372036854775807

Діапазон значень для типу unsigned long long наступний

0 ... 18446744073709551615

10. Як виділяється пам‘ять для змінних типів з плаваючою комою?

Для типів з плаваючою комою таблиця виділеної пам’яті для змінної має вигляд як показано нижче. Виділення пам’яті для змінних типів з плаваючою комою не залежить від того, яку розрядність має середовище (16 або 32 розряди).

11. Як виділяється пам‘ять для змінних символьного (char) та логічного (bool) типів?

Для змінних символьного типу незалежно від середовища (16 чи 32 розрядне) виділяється пам’ять на основі наступної таблиці.

12. Що таке константи у мові програмування C++? Як оголосити константу?

Константа – це є змінна, яка не може змінювати свого значення на протязі виконання програми. Значення константі присвоюється при її оголошенні. Для оголошення константи використовується ключове слово const.

Загальний вигляд оголошення константи

const тип ім‘я_константи = константне_значення;

де

  • тип – тип який отримує константа;
  • ім‘я_константи – ім‘я, за яким буде здійснюватись використання константного значення.

Приклади оголошення констант.

const float Pi = 3.1415; // Число Пі
const int Max = 1000;    // константа з іменем Max
int const Min = 100;     // константа з іменем Min
const char New_Line = '\n';
const bool YES = true;

13. Доступ до глобальних змінних всередині функцій. Операція розширення області видимості :: . Приклад

При розробці власних програм, що містять глобальні змінні, може виникнути ситуація коли всередині функції використовується локальна змінна з таким самим іменем. У цьому випадку ім’я локальної змінної перекриває ім’я глобальної змінної. При звертанні до імені всередині функції приймається до уваги локальна змінна (глобальна змінна ігнорується). Якщо виникла така ситуація, то для доступу до глобальної змінної можна використати операцію розширення області видимості, яка позначається :: .

З допомогою операції розширення області видимості :: можна отримати доступ не тільки до змінних, але і до констант та функцій.

Приклад.

У прикладі продемонстровано:

  • використання локальних та глобальних змінних;
  • використання прототипу функції;
  • використання операції розширення області видимості :: для доступу до глобальної змінної.

 

#include <iostream>
using namespace std;

// Глобальні та локальні змінні. Операція ::

// Оголосити глобальну змінну d.
// Ця змінна є доступна в обох функціях: MultGlobal2() та main()
int d = 15;

// Прототип функції, яка множить глобальну змінну d на 2
int MultGlobal2(void);

void main()
{
 // Оголосити локальну змінну d у функції main()
 int d;

 // 1. Вивести значення локальної змінної d
 d = 25;

 cout << "Local: d = " << d << endl; // d = 25 - локальна змінна перевизначає глобальну змінну

 // 2. Вивести значення глобальної змінної d,
 //   використовується операція :: - розширення області видимості
 cout << "Global: d = " << ::d << endl;

 // 3. Вивести подвоєне значення глобальної змінної d
 cout << "Global: d*2 = " << MultGlobal2() << endl; // d*2 = 30

 // 4. Записати в локальну змінну d нове значення 27
 d = 27;
 cout << "Local: d = " << d << endl;

 // 5. Записати в глобальну змінну d нове значення 68
 ::d = 68;
 cout << "Global: d = " << ::d << endl; // глобальна змінна d = 68

 // 6. Вивести подвоєне значення глобальної змінної ::d
 cout << "Global d * 2 = " << MultGlobal2() << endl; // буде виведено 136
}

// Функція, яка використовує значення глобальної змінної d.
// До локальної змінної d у функції main() ця функція доступу не має
int MultGlobal2(void)
{
 // тут доступна глобальна змінна d
 return d * 2;
}

Результат виконання програми

Local: d = 25
Global: d = 15
Global: d*2 = 30
Local: d = 27
Global: d = 68
Global d * 2 = 136


Зв’язані теми