Static Variables:
Static variable is of type internal or external based on its declaration. If it is declared outside the function block, then it is static global. Otherwise, it's similar to auto variable and it will be active within the block in which it is declared. A static variable is initialized only once and it is never reinitialized after that. It will retain its latest value even when the function or block execution is over.
Static variable example:
int func() {
static int num = 10;
........
return 0;
}
#include <stdio.h>
void update();
// static global
static int val = 1000;
int main() {
printf("Calling update for the 1st time\n");
update();
printf("Calling update for the 2nd time\n");
update();
printf("Calling update for the 3rd time\n");
update();
return 0;
}
void update() {
// static internal
static int num = 100;
num = num * 10;
printf("Value of num:%d\n", num);
val = val - 5;
printf("Value of val:%d\n", val);
}
Output:
jp@jp-VirtualBox:~/$ ./a.out
Calling update for the 1st time
Value of num:1000
Value of val:995
Calling update for the 2nd time
Value of num:10000 // old value of num is 1000 => 1000 * 10 = 10000
Value of val:990
Calling update for the 3rd time
Value of num:100000
Value of val:985
Calling update for the 1st time
Value of num:1000
Value of val:995
Calling update for the 2nd time
Value of num:10000 // old value of num is 1000 => 1000 * 10 = 10000
Value of val:990
Calling update for the 3rd time
Value of num:100000
Value of val:985
No comments:
Post a Comment