Sist oppdatert 20. april 2023 avPrepbytes
I programmeringsspråket C spiller variabler en avgjørende rolle for lagring av dataverdier som kan brukes gjennom hele programmet. Blant de forskjellige typer variabler tilgjengelig, er den statiske variabelen i C en av de mest brukte. Denne artikkelen tar sikte på å gi en detaljert oversikt over en statisk variabel i C, inkludert dens syntaks, egenskapene til en statisk variabel i C, forskjeller fra globale variabler og noen brukstilfeller av en statisk variabel i C. Så uten ytterligere forsinkelse, la oss gå videre til neste avsnitt.
Hva er statisk variabel i C?
En statisk variabel i C er en spesiell type variabel som har sin verdi lagret i minnet for hele levetiden til et program. Verdien til en statisk variabel initialiseres bare én gang ved programlasting, og den beholder verdien til programmet avsluttes.
Når en statisk variabel i C er deklarert, tildeler kompilatoren minne for den i et datasegment i stedet for en stabel, som brukes til automatiske variabler. Dette betyr at verdien av en statisk variabel vedvarer mellom funksjonskall, i motsetning til automatiske variabler som forsvinner når funksjonskallet fullføres.
En statisk variabel kan ha enten globalt eller lokalt omfang. Når den deklareres inne i en funksjon, beholder en statisk variabel sin verdi mellom funksjonskall. På den annen side, når den erklæres utenfor en hvilken som helst funksjon, blir den en global variabel og kan nås av alle funksjoner i programmet.
Syntaks for statisk variabel i C
Syntaksen for å deklarere en statisk variabel i programmeringsspråket C er som følger:
statisk datatype variabelnavn;
I denne syntaksen refererer "data_type" til datatypen til variabelen som deklareres (f.eks. int, float, double, etc.), og "variable_name" er navnet gitt til variabelen.
For eksempel, for å erklære en statisk heltallsvariabel kalt "count", bruker vi følgende setning:
statisk int teller;
Egenskaper til statisk variabel i C
Egenskapene til statiske variabler i programmeringsspråket C er som følger:
- Livstid:En statisk variabel har en levetid som strekker seg gjennom hele gjennomføringen av programmet.
- Omfang:En statisk variabel kan ha enten globalt eller lokalt omfang. Hvis den er deklarert i en funksjon, har den lokalt omfang, og hvis den erklæres utenfor en funksjon, blir den en global variabel.
- Minnetildeling:En statisk variabels minne tildeles i datasegmentet til programmets minne, i stedet for stabelen.
- Initialisering:En statisk variabel initialiseres bare én gang under programkjøring, på tidspunktet for programlasting.
- Standard initialisering:Hvis en statisk variabel ikke er eksplisitt initialisert, initialiseres den automatisk til null (0) eller NULL, avhengig av datatypen.
- Trådsikkerhet:Statiske variabler er ikke trådsikre som standard. Hvis flere tråder får tilgang til den samme statiske variabelen samtidig, kan det føre til raseforhold og uventet oppførsel.
Eksempler på statiske variabler i C
Nedenfor er eksempler som viser bruken av en statisk variabel i C.
Lokal omfang statisk variabel i C
Her er et eksempel på bruk av en lokal statisk variabel i C:Kodeimplementering:
- C
#include
void countCalls(void);int main(){ countCalls(); countCalls(); countCalls(); return 0;}void countCalls(void){ static int count = 0; // statisk variabel count++; printf("Funksjonen har blitt kalt %d ganger\n", count);} (Video) Probability Density FunctionsProduksjon:
Funksjonen har blitt kalt 1 ganger Funksjonen har blitt kalt 2 ganger Funksjonen har blitt kalt 3 ganger
Forklaring:I dette eksemplet bruker funksjonen countCalls() en statisk variabel kalt count. Tellevariabelen initialiseres til 0 når programmet lastes, og verdien vedvarer mellom funksjonskall. Hver gang countCalls()-funksjonen kalles opp, økes verdien av tellingen og skrives ut til konsollen.
Globalt omfang statisk variabel i C
Her er et eksempel på bruk av en global statisk variabel i C:Kodeimplementering:
- C
#include
statisk int count = 0; // global statisk variabelvoid countCalls(void);int main(){ countCalls(); countCalls(); countCalls(); return 0;}void countCalls(void){ count++; printf("Funksjonen har blitt kalt %d ganger\n", count);} (Video) Continuous Random Variables: Probability Density FunctionsProduksjon:
Funksjonen har blitt kalt 1 ganger Funksjonen har blitt kalt 2 ganger Funksjonen har blitt kalt 3 ganger
Forklaring:I dette eksemplet er tellevariabelen erklært som en global statisk variabel utenfor en hvilken som helst funksjon, noe som betyr at den kan åpnes og endres av enhver funksjon i filen. countCalls()-funksjonen øker tellevariabelen hver gang den kalles og skriver ut verdien til konsollen.
Forskjellen mellom statisk global og statisk lokal variabel
Her er tabellen som viser forskjellen mellom statiske globale og statiske lokale variabler i C:
Eiendom | Statisk global variabel | Statisk lokal variabel |
---|---|---|
Erklæring | Erklært utenfor enhver funksjon. | Erklært inne i en funksjon. |
omfang | Synlig og tilgjengelig for alle funksjoner i filen. | Synlig og tilgjengelig kun innenfor funksjonen der den er deklarert. |
Livstid | Opprettet når programmet starter og eksisterer til programmet avsluttes. | Opprettet når funksjonen først kalles og eksisterer til programmet avsluttes. |
Flere erklæringer | Kan deklareres flere ganger, men bare én forekomst eksisterer på tvers av alle filer. | Kan deklareres flere ganger, men bare én forekomst eksisterer i funksjonen der den er deklarert. |
Bruk av statisk variabel i C
Her er noen vanlige bruksområder for en statisk variabel i C:
- Opprettholde status på tvers av funksjonsanrop– Ved å beholde verdiene mellom funksjonskall, kan statiske variabler brukes til å opprettholde tilstandsinformasjon, for eksempel å telle antall ganger en funksjon har blitt kalt eller spore fremdriften til en sløyfe.
- Bufring av data som ofte brukes– Statisk variabel i C kan brukes til å lagre data som er kostbare å beregne og ofte tilgjengelig, for eksempel resultatet av en kompleks beregning eller innholdet i en fil.
- Dele data mellom relaterte funksjoner– Global statisk variabel i C kan brukes til å dele data mellom relaterte funksjoner i en fil, uten å eksponere dataene for andre filer.
- Implementering av vedvarende lagring– Statisk variabel i C kan brukes til å lagre data på tvers av programkjøringer, slik at programmet kan fortsette der det slapp etter å ha blitt slått av.
- Forbedrer ytelsen– Ved å beholde verdiene mellom funksjonskall, kan statiske variabler redusere mengden tid og ressurser som trengs for å beregne en verdi eller utføre en operasjon.
Konklusjon
Avslutningsvis er den statiske variabelen i C et viktig trekk. Det gjør det mulig å lage variabler som vedvarer gjennom programmets kjøring, noe som reduserer behovet for omberegning av verdier og optimaliserer ytelsen. Selv om de kan være nyttige, er det viktig å huske på de potensielle problemene som kan oppstå når du bruker statiske variabler i et flertrådsmiljø eller når du får tilgang til dem utenfor deres definerte omfang. Samlet sett er det å forstå egenskapene og riktig bruk av statiske variabler nøkkelen til å skrive effektiv og effektiv C-kode.
Vanlige spørsmål
Her er noen vanlige spørsmål om en statisk variabel i C.
Q1: Kan vi endre en statisk variabel i C med en annen funksjon?
Svar:Ja, en statisk variabel i C kan endres av enhver funksjon som har tilgang til den.
Q2: Kan vi få tilgang til en statisk variabel i C utenfor funksjonen den er definert i?
Svar:Nei, en statisk variabel i C kan bare nås innenfor det omfanget den er definert i.
Q3: Kan vi bruke en statisk variabel i et program med flere filer?
Svar:Ja, en statisk variabel i C kan brukes i et multifilprogram så lenge den er deklarert i en header-fil og inkludert i alle kildefiler som bruker den.
Q4: Hva er forskjellen mellom en konstant variabel og en statisk variabel i C?
Svar:En statisk variabels verdi kan endres under programkjøring, mens en konstant variabels verdi ikke kan endres.
Spørsmål 5: Hvordan kan jeg sikre trådsikkerhet når jeg arbeider med statiske variabler i et flertrådsmiljø?
Svar:For å sikre trådsikkerhet kan du bruke synkroniseringsteknikker som mutexes eller semaforer for å sikre at bare én tråd kan få tilgang til den statiske variabelen om gangen.
FAQs
What is the static variable in C? ›
In programming, a static variable is the one allocated “statically,” which means its lifetime is throughout the program run. It is declared with the 'static' keyword and persists its value across the function calls.
What is a static int in C? ›1) A static int variable remains in memory while the program is running. A normal or auto variable is destroyed when a function call where the variable was declared is over. For example, we can use static int to count the number of times a function is called, but an auto variable can't be used for this purpose.
How to use static keyword in C? ›A static function in C is a function that has a scope that is limited to its object file. This means that the static function is only visible in its object file. A function can be declared as static function by placing the static keyword before the function name.
Can we declare static variable in C? ›Static is a keyword used in C programming language. It can be used with both variables and functions, i.e., we can declare a static variable and static function as well.
Why use static variables in C? ›A static variable possesses the property of preserving its actual value even after it is out of its scope. Thus, the static variables are able to preserve their previous value according to their previous scope, and one doesn't need to initialize them again in the case of a new scope.
When to use static in C? ›Static functions are used in C programming to limit client access to internal APIs. It's employed to reuse the same function name across multiple files: Static functions are also utilized in C language programming to eliminate ambiguity if two source files in a program share the same function name.
What is an example of a static variable? ›The static variable can be used to refer to the common property of all objects (which is not unique for each object), for example, the company name of employees, college name of students, etc. The static variable gets memory only once in the class area at the time of class loading.
Is static bad in C? ›static makes code untestable, because static variables tend to be non-replaceable dependencies.
What is static vs non static variables in C? ›A simple read on your favorite C resource about the keyword static will reveal the answer. – Eugene Sh. Basically, a static global variable cannot be referenced by name outside the file it is defined in; a non- static global variable can be referenced by name in other source files than the one it is defined in.
What is static and dynamic variable in C? ›In the static memory allocation, variables get allocated permanently, till the program executes or function call finishes. In the Dynamic memory allocation, variables get allocated only if your program unit gets active.
What is difference between static and global variable in C? ›
The difference between static variables and global variables lies in their scope. A static variable only has a block scope while a global variable can be accessed from anywhere inside the program.
What is the difference between static and local variables in C? ›Example. Static variables have a lifetime that lasts until the end of the program. If they are local variables, then their value persists when execution leaves their scope.
What is a static variable? ›Static variables and static methods are two important concepts in Java. Whenever a variable is declared as static, this means there is only one copy of it for the entire class, rather than each instance having its own copy. A static method means it can be called without creating an instance of the class.
What is static variable and example? ›The static variable can be used to refer to the common property of all objects (which is not unique for each object), for example, the company name of employees, college name of students, etc. The static variable gets memory only once in the class area at the time of class loading.
What is static variable and its use? ›Static variables are used to keep track of information that relates logically to an entire class, as opposed to information that varies from instance to instance.