Najlepszy samouczek C Klasa pamięci W 2024 r. W tym samouczku możesz dowiedzieć się klasa przechowywania auto,zarejestruj klasie pamięci,static storage class,extern storage class,
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:
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 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 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 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