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

Классы хранения в C:auto, extern, static, класс регистрации в C

Что такое класс хранения в C?

Класс хранения представляет видимость и расположение переменной. Он сообщает, из какой части кода мы можем получить доступ к переменной. Класс хранения в C используется для описания следующих вещей:

Таким образом, класс хранения используется для представления информации о переменной.

ПРИМЕЧАНИЕ. Переменная связана не только с типом данных, ее значением, но и с классом хранения.

Всего существует четыре типа стандартных классов хранения. В таблице ниже представлены классы хранения в C.

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

В этом руководстве по C вы познакомитесь с различными типами классов хранения в C на примерах-

Класс автоматического хранения в C

Переменные, определенные с использованием класса автоматического хранения, называются локальными переменными. Auto означает автоматический класс хранения. Переменная находится в классе автоматического хранения по умолчанию, если она не указана явно.

Область действия автоматической переменной ограничена только конкретным блоком. Как только управление выходит из блока, доступ уничтожается. Это означает, что только блок, в котором объявлена ​​переменная auto, может получить к ней доступ.

Ключевое слово auto используется для определения класса автоматического хранения. По умолчанию переменная auto содержит мусорное значение.

Example, auto int age;

Программа ниже определяет функцию с двумя локальными переменными

int add(void) {
   int a=13;
   auto int b=48;
return a+b;}

Возьмем другую программу, которая показывает уровень видимости «уровень видимости» для автоматических переменных в каждом коде блока, которые являются независимыми друг от друга:

#include <stdio.h>
int main( )
{
  auto int j = 1;
  {
    auto int j= 2;
    {
      auto int j = 3;
      printf ( " %d ", j);
    }
    printf ( "\t %d ",j);
  }
  printf( "%d\n", j);}

ВЫВОД:

 3 2 1

Класс внешнего хранилища в C

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

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

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

Example, extern void display();

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

#include <stdio.h>
extern i;
main() {
   printf("value of the external integer is = %d\n", i);
   return 0;}

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

#include <stdio.h>
i=48;

Результат:

 value of the external integer is = 48


Чтобы скомпилировать и запустить приведенный выше код, выполните следующие действия

Шаг 1) Создать новый проект,

  1. Выберите консольное приложение
  2. Нажмите "Перейти".

Шаг 2) Выберите C и нажмите Далее

Шаг 3) Нажмите Далее

Шаг 4) Введите данные и нажмите Далее

<сильный>

Шаг 5) Нажмите Готово

<сильный>

Шаг 6) Поместите основной код, как показано в предыдущей программе, в файл main.c и сохраните его

Шаг 7) Создайте новый файл C [File -> new -> Empty File, сохраните (как original.c) и добавьте его в текущий проект, нажав «ОК» в диалоговом окне.

Шаг 8) Поместите и сохраните код C исходного файла .c, показанный в предыдущем примере, без функции main().

Шаг 9) Создайте и запустите свой проект. Результат показан на следующем рисунке

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

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

Example: static int count = 10;

Имейте в виду, что статическая переменная по умолчанию имеет нулевое начальное значение и инициализируется только один раз за время своего существования.

#include <stdio.h> /* function declaration */
void next(void);
static int counter = 7; /* global variable */
main() {
 while(counter<10) {
      next();
      counter++;   }
return 0;}
void next( void ) {    /* function definition */
   static int iteration = 13; /* local static variable */
   iteration ++;
   printf("iteration=%d and counter= %d\n", iteration, counter);}

Результат:

iteration=14 and counter= 7
iteration=15 and counter= 8
iteration=16 and counter= 9

Глобальные переменные доступны во всем файле, тогда как статические переменные доступны только в определенной части кода.

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

Зарегистрировать класс хранения в C

Вы можете использовать класс хранения регистров, когда хотите хранить локальные переменные внутри функций или блоков в регистрах ЦП, а не в ОЗУ, чтобы иметь быстрый доступ к этим переменным. Например, «счетчики» хорошо подходят для хранения в регистре.

Example: register int age;

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

Он похож на класс автоматического хранения. Переменная ограничена конкретным блоком. Единственное отличие состоит в том, что переменные, объявленные с использованием класса хранения регистров, хранятся внутри регистров ЦП, а не в памяти. Доступ к регистру быстрее, чем к основной памяти.

Переменные, объявленные с использованием класса хранения регистров, не имеют значения по умолчанию. Эти переменные часто объявляются в начале программы.

#include <stdio.h> /* function declaration */
main() {
{register int  weight;
int *ptr=&weight ;/*it produces an error when the compilation occurs ,we cannot get a memory location when dealing with CPU register*/}
}

ВЫВОД:

error: address of register variable 'weight' requested

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

. Класс хранения Декларация Хранилище Исходное значение по умолчанию Область Срок службы авто Внутри функции/блокаПамятьНепредсказуемаяВнутри функции/блокаВнутри функции/блокарегистр Внутри функции/блокаCPU РегистрыМусораВнутри функции/блокаВнутри функции/блокавнешний Вне всех functionsMemoryZeroEntire файл и другие файлы, где переменная объявлена ​​как externprogram runtimeStatic (local) Внутри функции/блокаMemoryZeroВ среде выполнения функции/блока программыСтатический (глобальный) Вне всех функцийMemoryZeroGlobalсреда выполнения программы

Сводка

В этом уроке мы обсудили классы хранения в C, подводя итог:


Язык C

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