logo

Статика в C

Static — це ключове слово, яке використовується в мові програмування C. Його можна використовувати як зі змінними, так і з функціями, тобто ми можемо оголосити статичну змінну та статичну функцію. Звичайна змінна обмежена областю, в якій вона визначена, тоді як область видимості статичної змінної – у всій програмі.

Ключове слово static можна використовувати в таких ситуаціях:

    Статична глобальна змінна
    Коли глобальна змінна оголошується за допомогою ключового слова static, вона називається статичною глобальною змінною. Він оголошується у верхній частині програми, і його видимість доступна протягом усієї програми.Статична функція
    Коли функцію оголошено за допомогою ключового слова static, відомого як статична функція. Його термін служби протягом всієї програми.Статична локальна змінна
    Коли локальна змінна оголошується за допомогою ключового слова static, вона називається статичною локальною змінною. Пам'ять статичної локальної змінної дійсна в усій програмі, але область видимості змінної така ж, як і для автоматичних локальних змінних. Однак, коли функція змінює статичну локальну змінну під час першого виклику функції, це змінене значення буде також доступним для наступного виклику функції.Статичні змінні-члени
    Коли змінні-члени оголошені за допомогою ключового слова static у класі, це називається статичними змінними-членами. Доступ до них можуть отримати всі екземпляри класу, а не окремий екземпляр.Статичний метод
    Функція-член класу, оголошена за допомогою ключового слова static, відома як статичний метод. Він доступний для всіх екземплярів класу, а не для конкретного екземпляра.

Розберемося на прикладі.

 #include int main() { printf('%d',func()); printf('
%d',func()); return 0; } int func() { int count=0; // variable initialization count++; // incrementing counter variable return count; } 

У наведеному вище коді викликається функція func(). У func() змінна count оновлюється. Як тільки функція завершить своє виконання, пам'ять змінної count буде видалена. Якщо ми не хочемо видаляти лічильник із пам’яті, тоді нам потрібно використовувати змінну count як статичну. Якщо ми оголосимо змінну як статичну, то змінна не буде видалена з пам’яті, навіть коли функція завершить своє виконання.

Вихід

 1 1 

Статична змінна

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

Синтаксис

Синтаксис статичної змінної наведено нижче:

виняток нульового покажчика
 static data_type variable_name; 

Давайте розглянемо простий приклад статичної змінної.

 #include int main() { printf('%d',func()); printf('
%d',func()); return 0; } int func() { static int count=0; count++; return count; } 

У наведеному вище коді ми оголосили змінну count як статичну. Під час виклику func() значення count оновлюється до 1, а під час наступного виклику функції значення змінної count стає 2. Отже, ми можемо сказати, що значення статичної змінної зберігається під час виклику функції .

Вихід

 1 2 

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

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

Статична функція виглядатиме так:

 static void func() { printf('Hello javaTpoint'); } 

Відмінності ч/б статичної та глобальної змінної

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

Статичні змінні обмежені вихідним файлом, у якому вони визначені, тобто вони недоступні для інших вихідних файлів.

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

Відмінності ч/б статичної локальної та статичної глобальної змінної

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

java перетворює рядок на ціле число

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

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

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

Властивості статичної змінної

Нижче наведено властивості статичної змінної:

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