Класи пам’яті
Змінні, незалежно від їх типу, мають свою область видимості і час існування.
Класи пам’яті:
- auto;
- static;
- extern;
- register.
Всі змінні в мові Сі за замовчуванням є локальними. Вони можуть використовуватися тільки усередині функції або блоку. По завершенні функції їх значення знищується.
Статична змінна також є локальною, але поза свого блоку може мати інше значення, а між викликами функції значення зберігається.
Зовнішня змінна є глобальною. Вона доступна в будь-якій частині коду і навіть в іншому файлі.
Реєстрова мінлива рекомендує компілятору зберігати значення в оперативну пам’ять.
Специфікатори типів даних в Сі можуть не вказуватися у таких випадках:
Базові типи
Для вказівки простих типів зазначаються специфікатори int, char, float та double. До змінних можуть підставлятися модифікатор unsigned (беззнаковий), signed (знаковий), short, long, long long.
За замовчуванням усі числа є знаковими, відповідно, можуть перебувати в діапазоні тільки позитивних чисел. Щоб визначити змінну типу char як знакову, пишеться signed char. Long, long long і short вказують, як багато місця в пам’яті відводиться для зберігання. Найбільше – long long, найменше – short.
Char – найменший тип даних в мові Сі. Для зберігання значень виділяється всього 1 байт пам’яті. Змінної типу character зазвичай присвоюються символи, рідше – цифри. Символьні значення беруться в лапки.
char a = a”;
char b = 2;
Тип int зберігає цілі числа, його розмір не визначений займає до 4 байт пам’яті, в залежності від архітектури комп’ютера.
int a = 12;
Явне перетворення беззнаковой змінної задається так:
unsigned int a = 12;
Неявне виглядає так:
int a = 12u;
Float і double визначають числа з крапкою. Числа float представляються у вигляді -2.3 або 3.34. Double використовується для більшої точності – після роздільника цілої та дробової частини вказується більше цифр. Цей тип займає більше місця в пам’яті, ніж float.
double a = 12.4567;
Void має пусте значення. Він визначає функції, які нічого не повертають. За допомогою цього специфікатора вказується пусте значення в аргументах методів. Покажчики, які можуть приймати будь-який тип даних, також визначаються як void.