Класи пам’яті в Сі

отримуйте знання тут

Класи пам'яті в Сі

Які класи пам'яті існують у мові сі?

Що таке клас пам'яті в сі?

Класи пам'яті в C

Клас пам'яті auto

Звичайна змінна, оголошена всередині блоку без вказівки на неї іншого класу, має клас пам'яті auto за замовчуванням.

Така змінна видно усередині блоку.

Змінні з класом пам'яті auto розміщуються у стеку.

Отже, за умовчанням локальна змінна має клас пам'яті auto.

Клас пам'яті

Змінні, оголошені як static, тобто. статичні, зберігають своє значення між дзвінками. Приклад для змінних static:

Отримуємо:

При другому виклик значення змінної з класом пам'яті auto, тобто. autoVar у цьому прикладі загубилося, а значення змінної static, тобто. Статичнийвар в цьому прикладі зберігся.

Ще одна тонкість. static змінна ініціалізується лише один раз. Якби це було інакше, то значення статичної статичноївари обнулилося б при повторному виклику.

За замовчуванням усі глобальні змінні статичні. І видно вони лише у своєму файлі.

Статичні функції в Сі

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

static функція staticFunc буде доступна лише у цьому модулі. Проста функція simpleFunc доступна інших модулів програми, тобто. її клас пам'яті extern. Пам'ять extern встановлюється для стандартних функцій. Код основногомодуля:

Клас пам'яті extern у C

Приклад основного модуля:

та іншого модуля програми:

Отримуємо:

Клас пам'яті register у C

Застосування модифікатора register є рекомендацією компілятору зберігати цю змінну в регістрі, а не в оперативній пам'яті. Не факт, що так буде. Якщо програма часто звертається до змінної, то є сенс оголосити її модифікатором register. Приклад:

Застосовувати register можна тільки до вказівників і цілого типу. Використовувати register можна і за умови вказівки формальних параметрів функцій. Приклади: