What are the default values of static variables in C? - GeeksforGeeks
What are the default values of static variables in C?
- Difficulty Level : Basic
- Last Updated : 28 May, 2017
In C, if an object that has static storage duration is not initialized explicitly, then:
— if it has pointer type, it is initialized to a NULL pointer;
— if it has arithmetic type, it is initialized to (positive or unsigned) zero;
— if it is an aggregate, every member is initialized (recursively) according to these rules;
— if it is a union, the first named member is initialized (recursively) according to these rules.
For example, following program prints:
Value of g = 0
Value of sg = 0
Value of s = 0
#include<stdio.h>
int g; //g = 0, global objects have static storage duration
static int gs; //gs = 0, global static objects have static storage duration
int main()
{
static int s; //s = 0, static objects have static storage duration
printf("Value of g = %d", g);
printf("\nValue of gs = %d", gs);
printf("\nValue of s = %d", s);
getchar();
return 0;
}
Please write comments if you find a