Open In App

Initialization of global and static variables in C

Last Updated : 08 May, 2017
Comments
Improve
Suggest changes
Like Article
Like
Report
Predict the output of following C programs. C
// PROGRAM 1
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
   static int *p = (int*)malloc(sizeof(p));
   *p = 10;
   printf("%d", *p);
}
C
// PROGRAM 2
#include <stdio.h>
#include <stdlib.h>
int *p = (int*)malloc(sizeof(p));

int main(void)
{
    *p = 10;
    printf("%d", *p);
}
Both of the above programs don't compile in C. We get the following compiler error in C.
error: initializer element is not constant
In C, static and global variables are initialized by the compiler itself. Therefore, they must be initialized with a constant value. Note that the above programs compile and run fine in C++, and produce the output as 10. As an exercise, predict the output of following program in both C and C++. C
#include <stdio.h>
int fun(int x)
{
    return (x+5);
}

int y = fun(20);

int main()
{
    printf("%d ", y);
}

Next Article
Article Tags :

Similar Reads