Open In App

Initialization of static variables in C

Last Updated : 31 Jul, 2018
Improve
Improve
Like Article
Like
Save
Share
Report

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.


Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads