Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> Язык C

C — Классы хранения

Класс хранения определяет область действия (видимость) и время жизни переменных и/или функций в программе на языке C. Они предшествуют типу, который они модифицируют. У нас есть четыре разных класса хранения в программе C —

Автоматический класс хранения

авто класс хранения — это класс хранения по умолчанию для всех локальных переменных.

{
   int mount;
   auto int month;
}

В приведенном выше примере определены две переменные в одном классе хранения. 'auto' можно использовать только внутри функций, т. е. локальных переменных.

Класс хранения регистра

Реестр Класс хранения используется для определения локальных переменных, которые должны храниться в регистре, а не в ОЗУ. Это означает, что переменная имеет максимальный размер, равный размеру регистра (обычно одно слово), и к ней нельзя применить унарный оператор '&' (поскольку у нее нет ячейки памяти).

{
   register int  miles;
}

Регистр следует использовать только для переменных, требующих быстрого доступа, таких как счетчики. Следует также отметить, что определение «регистра» не означает, что переменная будет храниться в регистре. Это означает, что он МОЖЕТ храниться в регистре в зависимости от ограничений аппаратного обеспечения и реализации.

Статический класс хранения

статический Storage указывает компилятору, что локальная переменная должна существовать в течение всего времени жизни программы, а не создавать и уничтожать ее каждый раз, когда она попадает в область видимости и выходит из нее. Следовательно, если сделать локальные переменные статическими, они смогут сохранять свои значения между вызовами функций.

Модификатор static также можно применять к глобальным переменным. Когда это делается, область действия этой переменной ограничивается файлом, в котором она объявлена.

В программировании на C, когда static используется в глобальной переменной, это приводит к тому, что только одна копия этого члена используется всеми объектами этого класса.

Живая демонстрация
#include <stdio.h>
 
/* function declaration */
void func(void);
 
static int count = 5; /* global variable */
 
main() {

   while(count--) {
      func();
   }
	
   return 0;
}

/* function definition */
void func( void ) {

   static int i = 5; /* local static variable */
   i++;

   printf("i is %d and count is %d\n", i, count);
}

Когда приведенный выше код скомпилирован и выполнен, он дает следующий результат —

i is 6 and count is 4
i is 7 and count is 3
i is 8 and count is 2
i is 9 and count is 1
i is 10 and count is 0

Внешний класс хранения

Внешний Класс хранения используется для предоставления ссылки на глобальную переменную, видимую для ВСЕХ программных файлов. Однако когда вы используете «extern», переменная не может быть инициализирована, она указывает имя переменной на место хранения, которое было определено ранее.

Когда у вас есть несколько файлов и вы определяете глобальную переменную или функцию, которая также будет использоваться в других файлах, тогда extern будет использоваться в другом файле для предоставления ссылки на определенную переменную или функцию. Просто для понимания, extern используется для объявления глобальной переменной или функции в другом файле.

Модификатор extern чаще всего используется, когда есть два или более файла, совместно использующих одни и те же глобальные переменные или функции, как описано ниже.

Первый файл:main.c

#include <stdio.h>
 
int count ;
extern void write_extern();
 
main() {
   count = 5;
   write_extern();
}

Второй файл:support.c

#include <stdio.h>
 
extern int count;
 
void write_extern(void) {
   printf("count is %d\n", count);
}

Здесь внешний используется для объявления count во втором файле, где его определение находится в первом файле, main.c. Теперь скомпилируйте эти два файла следующим образом —

$gcc main.c support.c

Это создаст исполняемую программу a.out . Когда эта программа выполняется, она дает следующий результат —

count is 5

Язык C

  1. Классы и объекты С++
  2. Дружественные функции C++ и дружественные классы
  3. Класс хранения C
  4. Структуры и классы в C ++
  5. Количество строк Python() с ПРИМЕРАМИ
  6. Счетчик списка Python() с ПРИМЕРАМИ
  7. Java — объект и классы
  8. Классы хранения в C++
  9. Интерфейсы в C++ (абстрактные классы)
  10. С# — Классы