ISВN 966-0000-00-0 7 страница

Табл. 3.1. Основні типи даних у мові програмування С++, типові розміри значень і діапазони представлення

Тип Розмір в бітах Діапазон
char -127 ¸ +127 або 0 ¸ +255
wchar_t 0 ¸ +45535
int (16-розрядне середовище) -32768 ¸ +32767
int (32-розрядне середовище) -2147483648 ¸ +2147483647
float 3.4Е-38 ¸ 3.4Е+38
double 1,7Е-308 ¸ 1,7Е+308
bool - true або false
void - Без значення

Тип bool призначений для зберігання булевих (тобто ІСТИНА/ФАЛЬШ) значень. У мові програмування C++ визначені дві булеві константи: true і false, що є єдиними значеннями, які можуть мати змінні типу bool.

Як вже розглядалося вище, тип void використовують для оголошення функції, яка не повертає значення. Інші можливості використання типу void розглядаються нижче у цьому навчальному посібнику.

3.1. Оголошення змінних

Загальний|спільний| формат настанови оголошення змінних має такий вигляд:

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

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

int izm, jzm, kzm;

char ch, chr;

float f, balance;

double d;

У мові програмування C++ ім'я змінної ніяк не пов'язане з її типом.

Згідно з стандартом мови програмування C++, перші 1024 символи будь-якого імені (у тому числі і імені змінної) є значущими. Це означає, що коли двоє імен відрізняються між собою хоча б одним символом з перших 1024, то компілятор розглядатиме їх як різні імена.

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

3.1.1. Локальні змінні

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

Код програми 3.1. Демонстрація механізму використання локальних змінних

#include <iostream>// Для потокового введення-виведення

using namespace std; // Використання стандартного простору імен

 

void fun_c(); // Оголошення прототипу функції

 

int main()

{

int x; // Локальна змінна для функції main().

 

х = 10;

fun_c();

cout << "\n";

cout << x; // Виводиться число 10.

 

getch(); return 0;

}

 

void fun_c() // Визначення функції

{

int x; // Локальна змінна для функції fun_c().

x = -199;

cout << x; // Виводиться число -199.

}

Локальна змінна відома тільки функції, у якій вона визначена.

У цій програмі цілочисельна змінна з іменем х оголошена двічі: спочатку у функції main(), а потім у функції fun_c(). Але змінна х з функції main() не має жодного стосунку до змінної х з функції fun_c(). Іншими словами, зміни, яким піддається змінна х з функції fun_c(), ніяк не позначаються на змінній х з функції main(). Тому наведена вище програма виведе на екран числа -199 і 10.

У мові програмування C++ локальні змінні створюються під час виклику функції та руйнуються при виході з неї. Те саме можна сказати і про пам'ять, що виділяється для локальних змінних: під час виклику функції в неї записуються відповідні значення, а при виході з функції пам'ять звільняється. Це означає, що локальні змінні не підтримують своїх значень між викликами функцій.

У деяких літературних джерелах, присвячених мові програмування C++, локальна змінна називається динамічною або автоматичною змінною. Але у цьому навчальному посібнику ми дотримуватимемося поширенішого терміну – локальна змінна.

3.1.2. Формальні параметри

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

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

int fun_d(int first, int last, char ch)

{

}

У цьому записі функція fun_d() має три параметри з іменами first, last і ch. За допомогою такого оголошення ми повідомляємо компіляторові тип кожної із змінних, які прийматимуть значення, що передаються функції. Хоча формальні параметри виконують спеціальне завдання – отримання значень аргументів, що передаються функції, їх можна також використо­ву­вати в тілі функції як звичайні локальні змінні. Наприклад, ми можемо присвоїти їм будь-які значення або використовувати у довільних (допустимих у мові програмування C++) виразах. Але, подібно до будь-яких інших локальних змінних, їх значення втрачаються після завершення роботи функції.

3.1.3. Глобальні змінні

Щоб наділити змінну "всепрограмною" популярністю, її необхідно зробити глобальною. На відміну від локальних, глобальні змінні зберігають свої значення протягом всього часу життя (часу існування) програми. Щоби створити глобальну змінну, її необхідно оголосити поза всіма функціями. Доступ до глобальної змінної можна отримати з будь-якої функції.

Глобальні змінні відомі всій програмі.

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

Код програми 3.2. Демонстрація механізму використання глобальних змінних

#include <iostream>// Для потокового введення-виведення

using namespace std; // Використання стандартного простору імен

 

void fun_c1();

void fun_c2();

 

int pm; // Це глобальна змінна.

 

int main()

{

int i; // Це локальна змінна.

for(i=0; i<10; i++) {

pm = i * 2;

fun_c1();

}

getch(); return 0;

}

 

void fun_c1()

{

cout << "pm: " << pm; // Звернення до глобальної змінної.

cout << "\n"; // Виведення символу нового рядка.

fun_c2();

}

 

void fun_c2()

{

int pm; // Це локальна змінна.

for(pm=0; pm<3; pm++) cout << '.';

}

Незважаючи на те, що змінна pm не оголошується ні у функції main(), ні у функції fun_c1(), обидві вони можуть її використовувати. Але у функції fun_c2() оголошується локальна змінна pm. Тут під час звернення до змінної pm здійснюється доступ до локальної, а не до глобальної змінної. Важливо пам'ятати: якщо глобальна і локальна змінні мають однакові імена, то всі посилання на суперечливе ім'я змінної усередині функції, у якій визначена локальна змінна, належать локальній, а не глобальній змінній.

3.2. Модифікатори типів даних

У мові програмування C++ перед такими типами даних, як char, int і double, дозволяється використовувати модифікатори. Модифікатор слугує для зміни значення базового типу, щоб він точніше відповідав конкретній ситуації. Перерахуємо можливі модифікатори типів: