Skip to main content

extern keyword in C

For extern keyword to understand let us first discuss the difference between declaring a variable and defining a variable.The declaration of variable is simply declaring variable in the program that is it just exist somewhere in the program with no memory allocated to that variable.When the variable is declared program know the datatype of the variable.On the other hand when we say we defined a variable it means that a variable is declared and also section of memory is allocated to that variable in the program.The variable in a program can be declared various times but can only defined once.Now moving onto the "extern" keyword when we declare a variable with extern keyword the variable is only declared and not defined.
Let's understand this using some sample programs :

int a;
int main()
{
a=10;
printf("%d",a);
}

The above program is compiled successfully without any error because the variable "a" is declared and defined globally.So the variable has its own memory in the program and when we are assigning the value to variable "a", compiler can see that there is a memory location for the variable in the program so no error..

extern int a;
int main()
{
a=10;
printf("%d",a);
}

The above program will result in error because we are using extern keyword with variable that means we are declaring the variable but not defining it.So no memory has been allocated to the variable "a".And when we are  assigning a value to the variable "a" compiler was not able to find the variable .That is we are trying to change the value of  variable which doesn't even exist.So resulting in compilation error.

Now consider another example in which the variable is declared using extern keyword in one  file and in another  file the variable is defined.Lets take first file be "file1.c" and second file be "file2.h".

file1.c
#include "file2.h"
extern int a;
int main()
{
a=10;
printf("%d",a);
}

The above program execute successfully as long as there exists a file "file2.h" which defines the variable "a".
Now there is an exception in extern keyword declaration in some cases like when we declare a variable using extern keyword and at the same time initialize it using some value then this variable is not just declared anymore but also defined,that is the memory is allocated to that variable in the program.So in such cases the program will run successfully.

extern int a=1;
int main()
{
a=10;
printf("%d",a);
}

The above program will run successfully despite having extern keyword because it is declared as well as defined.


Comments

Popular posts from this blog

Tricky Questions or Puzzles in C ( Updated for 2026)

Updated for 2026 This article was originally written when C/C++ puzzles were commonly asked in interviews. While such language-specific puzzles are less frequent today, the problem-solving and logical reasoning skills tested here remain highly relevant for modern Software Engineering, Data Engineering, SQL, and system design interviews . Why These Puzzles Still Matter in 2026 Although most Software &   Data Engineering interviews today focus on Programming, SQL, data pipelines, cloud platforms, and system design , interviewers still care deeply about how you think . These puzzles test: Logical reasoning Edge-case handling Understanding of execution flow Ability to reason under pressure The language may change , but the thinking patterns do not . How These Skills Apply to Data Engineering Interviews The same skills tested by C/C++ puzzles appear in modern interviews as: SQL edge cases and NULL handling Data pipeline failure scenarios Incremental vs ...

Decorators in Python

Decorators provide additional functionality to the functions without directly changing their definition of them. Basically, it takes the functions as an argument, adds functionality to them, and returns it.  Before diving deep into the concept of Decorators, let's first try to understand  What are functions in Python and what is an inner function? In Python everything is Objects, be it Class, Variables, and Functions . So functions are python first-class objects that can be used or passed as an argument. You can store the functions in variables, you can pass a function to another function as parameters, and you can also return the function from the function. Below is one simple example where we are treating functions as objects . def make_me_lowercase ( str ): return str .lower() print (make_me_lowercase( "HELLO World" )) copy_of_you = make_me_lowercase print (copy_of_you( "HELLO World" )) The output of the above calls for both the functio...

Program to uncompress a string ie a2b3c4 to aabbbcccc

Below is the program to uncompress a string #include<stdio.h> #include<conio.h> #include<stdlib.h> int main() { char str[100]="a2b3c4d8u7"; for(int i=0;str[i]!='\0';i++) { if(i%2!=0) { for(int j=0;j<atoi(&str[i]);j++) { printf("%c",str[i-1]); } } } getch(); } Want to become a Data Engineer? Check out below blog posts  1.  5 Key Skills Every Data Engineer needs in 2023 2.  How to prepare for Data Engineering Interviews 3.  Top 25 Data Engineer Questions