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

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

Programs and Puzzles in technical interviews i faced

I have attended interview of nearly 10 companies in my campus placements and sharing their experiences with you,though i did not got selected in any of the companies but i had great experience facing their interviews and it might help you as well in preparation of interviews.Here are some of the puzzles and programs asked to me in interview in some of the good companies. 1) SAP Labs I attended sap lab online test in my college through campus placements.It had 3 sections,the first one is usual aptitude questions which i would say were little tricky to solve.The second section was Programming test in which you were provided snippet of code and you have to complete the code (See Tricky Code Snippets  ).The code are from different data structures like Binary Tree, AVL Tree etc.Then the third section had questions from Database,OS and Networks.After 2-3 hours we got the result and i was shortlisted for the nest round of interviews scheduled next day.Then the next day we had PPT of t...