C Клас зберігання

У цьому підручнику ви дізнаєтесь про обсяг та термін служби локальних та глобальних змінних. Крім того, ви дізнаєтесь про статичні та регістрові змінні.

Кожна змінна в програмуванні на С має дві властивості: тип і клас зберігання.

Тип відноситься до типу даних змінної. Клас зберігання визначає обсяг, видимість та час дії змінної.

Існує 4 типи класів зберігання:

  1. автоматичний
  2. зовнішній
  3. статичний
  4. реєструвати

Місцева змінна

Змінні, оголошені всередині блоку, є автоматичними або локальними змінними. Локальні змінні існують лише всередині блоку, в якому вона оголошена.

Візьмемо приклад.

 #include int main(void) ( for (int i = 0; i < 5; ++i) ( printf("C programming"); ) // Error: i is not declared at this point printf("%d", i); return 0; )

При запуску вищевказаної програми ви отримаєте помилку незадекларованого ідентифікатора i. Це тому, що i оголошено всередині forблоку циклу. За межами блоку він незадекларований.

Візьмемо ще один приклад.

  int main() ( int n1; // n1 is a local variable to main() ) void func() ( int n2; // n2 is a local variable to func() ) 

У наведеному вище прикладі n1 є локальним для, main()а n2 - локальним для func().

Це означає, що ви не можете отримати доступ до змінної n1 всередині, func()оскільки вона існує лише всередині main(). Так само ви не можете отримати доступ до змінної n2 всередині, main()оскільки вона існує лише всередині func().

Глобальна змінна

Змінні, які оголошені поза усіма функціями, відомі як зовнішні або глобальні змінні. Вони доступні з будь-якої функції всередині програми.

Приклад 1: Глобальна змінна

 #include void display(); int n = 5; // global variable int main() ( ++n; display(); return 0; ) void display() ( ++n; printf("n = %d", n); ) 

Вихідні дані

 n = 7

Припустимо, глобальна змінна оголошена в file1. Якщо ви спробуєте використати цю змінну в іншому файлі file2, компілятор скаржиться. Для вирішення цієї проблеми ключове слово externвикористовується в, file2щоб вказати, що зовнішня змінна оголошена в іншому файлі.

Реєстрація змінної

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

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

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

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

Статична змінна оголошується за допомогою staticключового слова. Наприклад;

 статичний int i;

Значення статичної змінної зберігається до кінця програми.

Приклад 2: Статична змінна

 #include void display(); int main() ( display(); display(); ) void display() ( static int c = 1; c += 5; printf("%d ",c); ) 

Вихідні дані

 6 11

Під час першого виклику функції значення c ініціалізується до 1. Його значення збільшується на 5. Тепер значення c дорівнює 6, що друкується на екрані.

Під час другого виклику функції c знову не ініціалізується до 1. Це тому, що c - статична змінна. Значення c збільшено на 5. Тепер його значення становитиме 11, яке друкується на екрані.

Цікаві статті...