In C, static variables can only be initialized using constant literals. For example, following program fails in compilation.
#include<stdio.h> int initializer( void )
{ return 50;
} int main()
{ static int i = initializer();
printf ( " value of i = %d" , i);
getchar ();
return 0;
} |
If we change the program to following, then it works without any error.
#include<stdio.h> int main()
{ static int i = 50;
printf ( " value of i = %d" , i);
getchar ();
return 0;
} |
The reason for this is simple: All objects with static storage duration must be initialized (set to their initial values) before execution of main() starts. So a value which is not known at translation time cannot be used for initialization of static variables.
Thanks to Venki and Prateek for their contribution.
Article Tags :