Latest web development tutorials

C Klasa pamięci

Definicja zmiennej Program C Klasa składowania / zakres funkcji (widoczność) oraz cykl życia. Te Specyfikatory umieszczone przed ich zmienić typ. Poniżej znajdują przechowywania klasy C dostępne w programie:

  • automatyczny
  • zarejestrować
  • statyczny
  • zewnętrzny

klasa przechowywania auto

klasa przechowywaniaauto to wszystkie lokalne zmienne klasy domyślny przechowywania.

{
   int mount;
   auto int month;
}

Powyższy przykład definiuje dwie zmienne o tej samej klasie pamięci, auto może być używany tylko wewnątrz funkcji, a mianowicie auto modyfikuje tylko zmiennej lokalnej.

zarejestruj klasie pamięci

zarejestruj storage class służy do definiowania przechowywane w rejestrach zamiast RAM w zmiennych lokalnych.Oznacza to, że maksymalna wielkość zmiennej jest równa wielkości rejestru (zwykle słów), i nie może być przyłożona do niego jednoargumentowy '&' operatora (ponieważ nie ma miejsca w pamięci).

{
   register int  miles;
}

Potrzebujesz zarejestrować się tylko do szybkiego dostępu do zmiennych, takich jak licznik. Należy również zauważyć, że określenie "rejestr" nie oznacza, że ​​zmienna jest przechowywana w rejestrze, oznacza to, że wartość zmiennej może być przechowywana w rejestrze, w zależności od ograniczeń sprzętu i realizacji.

static storage class

static storage class instruuje kompilator, aby utrzymać istnienie zmiennych lokalnych w cyklu życia programu, bez konieczności wprowadzania go za każdym razem, gdy wychodzi z zakresu i być tworzone i niszczone.W związku z tym, zastosowanie statycznych zmienne lokalne mogą być modyfikowane w celu utrzymania wartości zmienne lokalne połączenia między funkcyjnych.

Modyfikator statyczne mogą być stosowane do zmiennych globalnych. Gdy zmodyfikowany statyczną zmienną globalną, zmienna będzie ograniczać zakresu rachunku w swoich aktach.

Programowanie w języku C, przy stosowaniu nastatycznych pól klasy, wszystkie obiekty będą prowadzić tylko w jednym egzemplarzu klasy członkowie są wspólne.

#include <stdio.h>
 
/* 函数声明 */
void func(void);
 
static int count = 5; /* 全局变量 */
 
main()
{
   while(count--)
   {
      func();
   }
   return 0;
}
/* 函数定义 */
void func( void )
{
   static int i = 5; /* 局部静态变量 */
   i++;

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

Może nadal nie może zrozumieć ten przykład, ponieważ użyłem funkcji i zmiennych globalnych, te dwa pojęcia do tej pory nie wyjaśnia. Nawet jeśli nie w pełni zrozumieć, że nie ma znaczenia, kolejnych rozdziałach będziemy wyjaśniać w szczegółach. Gdy powyższy kod jest kompilowany i wykonany, że daje następujące wyniki:

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 storage class

extern storage class służy do zapewnienia odniesienia do zmiennej globalnej, zmienna globalna dla wszystkich plików programu są widoczne.Podczas korzystania z 'extern', którzy nie mogą zainicjować zmienną nazwa zmienna będzie wskazywać na wcześniej określonym miejscu składowania.

Gdy masz kilka dokumentów i zdefiniować zmienną globalną lub funkcji, które mogą być używane w innych dokumentach, można użyćexternw innych plikach, aby odwoływać się do zmiennej lub funkcji zdefiniowane. Można jerozumieć,extern służy do deklarowania zmiennej globalnej lub funkcji w innym pliku.

extern modyfikator jest zwykle używany, gdy istnieją dwie lub więcej plików z tych samych zmiennych globalnych lub funkcji czasu, co następuje:

Pierwszy plik: main.c

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

Drugi plik: support.c

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

Oto druga kluczoweexternplik jest wykorzystywanyliczyćw pierwszym piśmie zostało zdefiniowane w pliku main.c. Teraz oba pliki kompilacji, co następuje:

 $gcc main.c support.c

To będzie produkowaća.out programu wykonywalnego, gdy program jest wykonywany, będzie produkować następujące wyniki:

5