C Програмування

Статичне програмування на Сі

Статичне програмування на Сі
У цьому посібнику ми пояснимо ключове слово static, застосовуючи його до змінних та функцій. Static - це ключове слово, що використовується в програмуванні на C, і воно може бути застосовано, використовуючи такий синтаксис:

статичний тип даних ім'я змінної

Статичні локальні змінні

Коли змінна у функції є статичною, змінна зберігає своє значення між викликами функції.

// Приклад1.c
#включати
int fun1 ()

int count = 0;
рахувати ++;
кількість повернень;

int fun2 ()

статичний розрахунок int = 0;
рахувати ++;
кількість повернень;

int main ()

printf ("fun1 1-й виклик повертає:% d \ n", fun1 ());
printf ("fun1 2-й виклик повертає:% d \ n \ n", fun1 ());
printf ("fun2 1-й виклик повертає:% d \ n", fun2 ());
printf ("fun2 2-й виклик повертає:% d \ n", fun2 ());
повернути 0;


У прикладі 1.c, ми маємо дві функції: fun1 () і fun2 (). В fun1 (), ми оголошуємо одну змінну (count) та ініціалізуємо її до 0. Потім ми збільшуємо змінну count і повертаємо отримане значення. Використовуючи основний (), ми називаємо fun1 () двічі, і кожного разу повертається значення 1, оскільки змінна count очищається під час виклику fun1 () завершено. В fun2 () ми оголосили змінну count як статичну змінну. Тому його цінність зберігається. Використовуючи основний (), ми називаємо fun2 () двічі: перший раз повертається значення 1, а вдруге - значення 2.

Статичні глобальні змінні

Статична глобальна змінна поводиться так само, як і інші глобальні змінні, але до неї неможливо отримати доступ з іншої програми C.

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

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

Ініціалізація статичних змінних

Якщо статична змінна явно не ініціалізована, вона ініціалізується як 0.

// Приклад2.c
#включати
int main ()

статичний int i;
printf ("Значення i:% d \ n", i);
повернути 0;


У прикладі2.c, ми оголосили статичну змінну i, яка не ініціалізується. Однак, оскільки змінна є статичною, вона автоматично ініціалізується до 0.

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

// Приклад3.c
#включати
int fun1 ()

повернення 5;

int main ()

статичний int i = fun1 ();
printf ("Значення i:% d \ n", i);
повернути 0;


У прикладі 3.c, ми намагаємося ініціалізувати статичну змінну, використовуючи повернене значення fun1 (). Однак, як бачите, при компіляції коду повертається помилка.

Резюме

Час роботи статичної змінної та час роботи програми рівні.

Якщо статична змінна не ініціалізована, тоді вона прийме значення за замовчуванням 0.

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

Підручник Тінь розкрадача гробниць для Linux
Shadow of the Tomb Raider - дванадцяте доповнення до серії Tomb Raider - франшизи екшн-пригодницької гри, створеної Eidos Montreal. Гру сприйняли як к...
Як збільшити FPS в Linux?
FPS означає Кадри в секунду. Завданням FPS є вимірювання частоти кадрів при відтворенні відео або ігрових виставах. Простими словами кількість безпере...
Найкращі лабораторні ігри Oculus App
Якщо ви є власником гарнітури Oculus, то вам потрібно дізнатися про бокове завантаження. Бокове завантаження - це процес встановлення негарнітного вмі...