Static variables in C
How to work with static variables in C
Inside a function, you can initialize a static variable using the static keyword.
I said “inside a function”, because global variables are static by default, so there’s no need to add the keyword.
What’s a static variable? A static variable is initialized to 0 if no initial value is specified, and it retains the value across function calls.
Consider this function:
int incrementAge() {
int age = 0;
age++;
return age;
}
If we call incrementAge() once, we’ll get 1 as the return value. If we call it more than once, we’ll always get 1 back, because age is a local variable and it’s re-initialized to 0 on every single function call.
If we change the function to:
int incrementAge() {
static int age = 0;
age++;
return age;
}
Now every time we call this function, we’ll get an incremented value:
printf("%d\n", incrementAge());
printf("%d\n", incrementAge());
printf("%d\n", incrementAge());
will give us
1
2
3
We can also omit initializing age to 0 in static int age = 0;, and just write static int age; because static variables are automatically set to 0 when created.
We can also have static arrays. In this case, each single item in the array is initialized to 0:
int incrementAge() {
static int ages[3];
ages[0]++;
return ages[0];
} download all my books for free
- javascript handbook
- typescript handbook
- css handbook
- node.js handbook
- astro handbook
- html handbook
- next.js pages router handbook
- alpine.js handbook
- htmx handbook
- react handbook
- sql handbook
- git cheat sheet
- laravel handbook
- express handbook
- swift handbook
- go handbook
- php handbook
- python handbook
- cli handbook
- c handbook
subscribe to my newsletter to get them
Terms: by subscribing to the newsletter you agree the following terms and conditions and privacy policy. The aim of the newsletter is to keep you up to date about new tutorials, new book releases or courses organized by Flavio. If you wish to unsubscribe from the newsletter, you can click the unsubscribe link that's present at the bottom of each email, anytime. I will not communicate/spread/publish or otherwise give away your address. Your email address is the only personal information collected, and it's only collected for the primary purpose of keeping you informed through the newsletter. It's stored in a secure server based in the EU. You can contact Flavio by emailing flavio@flaviocopes.com. These terms and conditions are governed by the laws in force in Italy and you unconditionally submit to the jurisdiction of the courts of Italy.