Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СПОС.doc
Скачиваний:
4
Добавлен:
02.05.2019
Размер:
555.52 Кб
Скачать

2.2 Типи даних

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

Мова С строго типізована. Це означає, що:

  • кожна змінна має тип і кожен тип строго визначений;

  • всі привласнення, явні або виконувані при передаачі параметрів у процесі виклику функцій , перевіряються на відповідність типів.

Є 5 базових типів даних: символьний, цілочисельний, речовинний з одинарною точністю, речовинний з подвійною точністю і void. Значення типу char використовуються для зберігання ASCII-кодів або будь-яких 8-бітових величин. Змінні типу int використовуються для зберігання цілих величин. Змінні типу float і double містять дійсні числа.

Тип void має три призначення. Перше - вказівка про неповернення значення функцією. Друге - вказівка про неотримання параметрів функцією. Третє - створення покажчиків, що нетипізуються.

С підтримує дещо інших типів, включаючи структури, об'єднання, бітові поля, переліки і типи, визначувані користувачем. Їх призначення розкриватиметься у міру вивчення матеріалу.

2.3 Змінні

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

Опис змінних

Опис змінної має відповідати такому правилу:

Тип ідентифікатор [=значення], ідентифікатор[=значення]…];

Тут квадратні дужки є метасимволами. Конструкція, узята в квадратні дужки, не повинна бути обов’язково присутньою у визначенні.

З синтаксису опису виходить, що можна одночасно описати декілька змінних одного типу, а також при бажанні їх проініціалізувати. Нижче наведені приклади описів:

char ch,ch1=’*’;

int d=5,e,f=-1;

float fl;

double d1=0.5,d2;

Для описів в програмі не має певного місця. Єдина вимога – опис змінної має передувати її використовуванню.

Область видимості змінних

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

Розрізняють локальні, глобальні, регістрові, зовнішні і статичні змінні.

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

Будь-яка функція на початку роботи виділяє пам'ять в стеку для запам'ятовування своїх змінних. Ця пам'ять існує до тих пір, поки ця функція активна. Після свого повернення функція звільняє пам'ять і дані, що все зберігаються там, втрачаються.

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

Регістрові змінні запам'ятовуються безпосередньо в регістрі процесора і обробляються інструкціями в машинних кодах. Використання таких змінних може значно підвищити швидкодію програми.

Для оголошення регістрових змінних використовується специфікатор класу пам'яті register:

register int c;

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

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

Змінні, оголошені поза модулем, в якому вони використовуються, називаються зовнішніми.

Для оголошення зовнішніх змінних використовується специфікатор класу пам'яті extern.

Статичні змінні. Якщо локальні змінні після завершення роботи блоку втрачаються, а їх значення потрібно зберегти, то використовуються змінні типу static.

При оголошенні такої змінної її потрібно ініціалізувати:

static int c=5;