Open In App

Initialization of global and static variables in C

Improve
Improve
Like Article
Like
Save
Share
Report

Predict the output of following C programs.




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





// 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++.




#include <stdio.h>
int fun(int x)
{
    return (x+5);
}
  
int y = fun(20);
  
int main()
{
    printf("%d ", y);
}




Last Updated : 08 May, 2017
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads