C language learned by suffering
C language learned by suffering
Variables that survive in the function
Lifetime of static local variables
We have covered local variables, global variables, and variables with different lifetimes.
In fact, there is a variable with unusual characteristics that is intermediate between the two.
When declaring a variable in a function, you can prefix the type name with static to make it
You can declare static local variables.
The following program is an example of declaring a static local variable.
The result of executing this program will be as follows
Even though it is declared in the function, the value is increasing by 1 with each call, and
The beginning value is 0 even though no initialization has been done.
This appears to be a global variable by all accounts.
However, the variable count is essentially a local variable because it is declared within a function.
In fact, using the variable count within the main function results in an error.
This is a characteristic of static local variables.
Since it is declared within a function, it can only be used within the function in which it is declared, but
Its value remains until the program terminates.
It is also automatically initialized to 0 without any particular initialization.
For example, the following initialization can be counted
This variable is used when a function wants to remember the value of a previous call.
Its use is limited, but it can be used to count the number of times a function has been called or to
A possible example would be a function that performs a search and stores the position of previously found characters.
In fact, there is a variable with unusual characteristics that is intermediate between the two.
When declaring a variable in a function, you can prefix the type name with static to make it
You can declare static local variables.
The following program is an example of declaring a static local variable.
source code
#include <stdio.h>
int countfunc(void);
int main(void)
{
countfunc();
countfunc();
countfunc();
return 0;
}
int countfunc(void)
{
static int count; /* static local variable */
count++;
printf("%d\n", count);
return count;
}
The result of executing this program will be as follows
Execution Result
1
2
3
2
3
Even though it is declared in the function, the value is increasing by 1 with each call, and
The beginning value is 0 even though no initialization has been done.
This appears to be a global variable by all accounts.
However, the variable count is essentially a local variable because it is declared within a function.
In fact, using the variable count within the main function results in an error.
This is a characteristic of static local variables.
Since it is declared within a function, it can only be used within the function in which it is declared, but
Its value remains until the program terminates.
It is also automatically initialized to 0 without any particular initialization.
Note that initialization is done only once at the beginning.
For example, the following initialization can be counted
Source Code
static int count = 0; /* static local variable */
This variable is used when a function wants to remember the value of a previous call.
Its use is limited, but it can be used to count the number of times a function has been called or to
A possible example would be a function that performs a search and stores the position of previously found characters.
About this Site
The C language (bitter C), which is learned by suffering, is
This is the definitive C language introductory site.
It systematically explains the basic functions of the C language and
It is as complete as or better than any book on the market.