your image

Initialization of static variables in C - GeeksforGeeks

geeksforgeeks
Related Topic
:- C language programming languages

Initialization of static variables in C

  • Difficulty Level : Easy
  • Last Updated : 31 Jul, 2018

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.

Comments