Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Архив WinRAR / 2_Посібник_С_002.doc
Скачиваний:
39
Добавлен:
17.05.2015
Размер:
2.7 Mб
Скачать

[ Модифікатори ] тип ім’я_змінної;

де модифікатори– модифікаторconstчи/або один з модифікаторів

класу пам’яті.

тип– тип даних;

ім’я_змінноїідентифікатор.

Мова C підтримує чотири класи пам'яті, які визначають такими модифікаторами: auto, static, register, extern. Клас пам’яті визначає область видимості і час життя змінної;

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

Приклад 2. Використання модифікатораconst

int apples; /* оголошення змінної apples типу int без

використання модифікаторів */

auto int apples; /* використання модифікатора auto */

const auto int apples = 7; /*використання модифікаторів const та auto*/

5.2 Час існування та область видимості змінних

Кожна змінна, оголошена в програмі, має дві найважливіші характеристики:

- час існування;

- область видимості.

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

Час існування, або час життя змінної, вимірюється у наступних двох відносних одиницях.

Локальний час життя –це час існування змінної при виконанні блоку, у якому вона оголошена.

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

Область видимості, або область дії змінної, також вимірюється в двох відносних одиницях:

1)до кінця блоку, у якому оголошена змінна.

2) до кінця файлу, у якому оголошена змінна.

Керувати цими характеристиками змінних програміст може двома шляхами:

1) зміною місця оголошення змінної у програмі;

2) використанням модифікаторів auto, register, static, extern.

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

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

Зовнішня(extern) змінна є глобальною змінною. Специфікатор extern інформує компілятор, що змінна буде оголошена (без extern) в іншому файлі, де їй і буде виділена пам'ять.

Статичній(static) змінній (константі) виділяється пам'ять після її оголошення і зберігається до кінця виконання програми. Статичні змінні при оголошенні ініціалізуються нульовими (логічні, цілі і дійсні) порожніми значеннями.

5.3 Цілі типи даних

Тип даних intпризначений для відображення цілих чисел. Розмір пам’яті який виділяється для змінної типу int визначений як правило розміром машинного слова, для більшості сучасних ПК це 32 біта (4 байта). Приклади літералів цілих чисел – 1, 2, 10, 101. При використанні 4-х байт для зберігання цілих чисел діапазон їх представлення – від мінус 2147483648 до плюс 2147483647. Таким чином тип int може представляти 4294967294 цілих чисел, тобто 232.

Якщо є потреба оголосити змінну цілого типу потрібно використати ключове слово int.

Приклад 3 . Оголошення однієї змінної типуint.

int numberOfStudent;

Приклад 4 . Оголошення декількох змінних типуint.

int numberOfStudent, i, j;

Приклад 5 . Оголошення та ініціалізація змінних типуint.

int numberOfStudent = 25, i = 0, j = 2;

Тип даних charпризначений для зберігання одного ASCII символа. Розмір памяті який виділяється для змінної типу char визначений розміром таблиці ASCII символів і складає 1 байт. Приклади літералів символів – ‘a’, ‘d’, ‘4’, ‘R’, а також спеціальні символи такі як ‘\0’, ‘\n’. Під час компіляції літерали символів переводяться у відповідне, згідно таблиці ASCII, ціле значення. Наприклад, ‘A’ буде переведено у ціле число 65.

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

Приклад 6.Перший спосіб.

char letter1 = ‘a’;

Приклад 7.Другий спосіб.

char letter2 = 97; /* в таблиці ANSII 97 відповідає символу ‘a’*/

Ще один вид літералів що мають бути згадані у звязку з char це стрічкові літерали (string literals). Стрічка це набір символів, і для її представлення використовуються подвійні кавички (“ ”), на відміну від символів які представляються у одинарних кавичках (‘ ’). Прикладом стрічкового літералу є “Hello World \n”, в прикладі першої програми на С.

Типи даних short int та long int на відміну від базового типу int дозволяють використовувати відповідно менше чи більше пам’яті для представлення даних. Так якщо для представлення цілого числа достатній діапазон значень від мінус 32768 до плюс 32767, то доцільно використати типshort int. Відповідно типlong intвикористовується у випадку, коли потрібний більший діапазон значень для представлення числа у порівнянні з типом int.

Ключове слово int не обов’язкове при оголошенні змінних типів short int чи long int.

Як правило змінні типу short int займають в пам’яті 2 байти, int – 4 байти, long int – 4 чи 8 байт.

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

При оголошенні змінних типу unsigned int, unsigned short int та unsigned long intключове слово int не є обовязковим.

На відміну від unsigned ключове слово signedвказує, що тип даних знаковий, але використання signed не є обов’язковим, так як усі базові типи даних по замовченню знакові.

Тип даних unsigned charвикористовується для представлення символів російського алфавіту, тому що коди російських букв перевищують величину 127.

Соседние файлы в папке Архив WinRAR