C Клас на съхранение

В този урок ще научите за обхвата и живота на локалните и глобалните променливи. Също така ще научите за статичните и регистриращите се променливи.

Всяка променлива в програмирането на 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, което се отпечатва на екрана.

Интересни статии...