Bird
Raised Fist0
Cprogramming~5 mins

Extern storage class - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is the purpose of the <code>extern</code> storage class in C?
The <code>extern</code> storage class tells the compiler that a variable or function is defined in another file or location. It allows sharing variables or functions across multiple files.
Click to reveal answer
beginner
How does extern differ from static in C?
extern makes a variable or function visible across multiple files, while static limits visibility to the current file only.
Click to reveal answer
intermediate
What happens if you declare a variable with extern but do not define it anywhere?
The linker will give an error because it cannot find the actual definition of the variable. extern only declares, it does not allocate memory.
Click to reveal answer
beginner
Example: How to declare and use an extern variable across two files?
File1.c:
int count = 10;
File2.c:
extern int count; // refers to count in File1.c
This allows File2.c to access the variable count defined in File1.c.
Click to reveal answer
beginner
Can extern be used with functions? If yes, how?
Yes. Functions have external linkage by default. You can explicitly declare a function with extern to indicate it is defined elsewhere, allowing calls across files.
Click to reveal answer
What does the extern keyword do in C?
ADeclares a variable defined in another file
BDefines a new variable in the current file
CMakes a variable private to the current file
DAllocates memory for a variable
If you use extern int x; but never define x, what happens?
AProgram compiles and runs fine
BCompiler error
CVariable <code>x</code> is initialized to zero automatically
DLinker error
Which storage class limits a variable's visibility to the current file?
Aextern
Bauto
Cstatic
Dregister
Are functions extern by default in C?
AYes
BNo
COnly if declared with extern
DOnly if declared static
How do you share a variable between two files in C?
ADeclare it as static in both files
BDefine it in one file and declare it as extern in the other
CDefine it as auto in both files
DUse register keyword
Explain how the extern storage class helps in sharing variables across multiple files in C.
Think about how you tell the compiler a variable exists somewhere else.
You got /4 concepts.
    Describe the difference between extern and static storage classes in terms of variable visibility.
    Consider where the variable can be accessed from.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main purpose of the extern storage class in C?
      easy
      A. To declare a variable or function defined in another file
      B. To allocate memory for a variable inside a function
      C. To create a constant variable
      D. To define a variable local to a block

      Solution

      1. Step 1: Understand the role of extern

        The extern keyword tells the compiler that the variable or function is defined elsewhere, usually in another file.
      2. Step 2: Compare with other storage classes

        Other options like local variables or constants do not use extern. It specifically helps share variables/functions across files.
      3. Final Answer:

        To declare a variable or function defined in another file -> Option A
      4. Quick Check:

        extern declares external variables [OK]
      Hint: Remember: extern means 'defined outside this file' [OK]
      Common Mistakes:
      • Confusing extern with static
      • Thinking extern allocates memory
      • Using extern for local variables
      2. Which of the following is the correct syntax to declare an external integer variable named count?
      easy
      A. int extern count;
      B. extern int count;
      C. extern int count = 0;
      D. static extern int count;

      Solution

      1. Step 1: Recall correct extern declaration syntax

        The correct syntax places extern before the type: extern int count;
      2. Step 2: Check invalid options

        int extern count; reverses order, which is invalid. extern int count = 0; initializes the extern variable, which is not allowed. static extern int count; combines static and extern, which conflicts.
      3. Final Answer:

        extern int count; -> Option B
      4. Quick Check:

        extern before type, no initialization [OK]
      Hint: extern must come before type and no initialization [OK]
      Common Mistakes:
      • Initializing extern variables
      • Placing extern after type
      • Combining extern with static
      3. Consider two files:
      // file1.c
      int count = 5;

      // file2.c
      extern int count;
      printf("%d", count);

      What will be the output when these files are compiled and run together?
      medium
      A. 5
      B. 0
      C. Compilation error
      D. Undefined behavior

      Solution

      1. Step 1: Understand extern linking

        The variable count is defined in file1.c with value 5. The extern declaration in file2.c refers to the same variable.
      2. Step 2: Predict output

        Since count is defined and initialized in file1.c, printing it in file2.c outputs 5.
      3. Final Answer:

        5 -> Option A
      4. Quick Check:

        extern links to defined variable value [OK]
      Hint: Extern links to defined variable, prints its value [OK]
      Common Mistakes:
      • Assuming extern creates a new variable
      • Expecting zero as default
      • Ignoring multi-file linking
      4. What is wrong with the following code snippet?
      extern int value = 10;
      int main() {
      printf("%d", value);
      return 0;
      }
      medium
      A. No variable named value declared
      B. Missing semicolon after extern declaration
      C. extern variable cannot be initialized
      D. printf syntax is incorrect

      Solution

      1. Step 1: Check extern initialization rules

        An extern declaration cannot initialize the variable. Initialization must be done in exactly one place without extern.
      2. Step 2: Identify error in code

        The code tries to initialize value with 10 in the extern declaration, which causes a compilation error.
      3. Final Answer:

        extern variable cannot be initialized -> Option C
      4. Quick Check:

        extern declarations must not initialize [OK]
      Hint: Never initialize extern variables where declared [OK]
      Common Mistakes:
      • Initializing extern variables
      • Confusing extern with normal definitions
      • Ignoring linker errors
      5. You have two files:
      // file1.c
      int total = 100;
      void update() { total += 50; }

      // file2.c
      extern int total;
      void update();
      int main() {
      update();
      printf("%d", total);
      return 0;
      }

      What will be the output when compiled and run together?
      hard
      A. Compilation error due to missing extern
      B. 100
      C. Undefined behavior due to multiple definitions
      D. 150

      Solution

      1. Step 1: Understand extern and function usage

        total is defined in file1.c and declared extern in file2.c. The function update() modifies total.
      2. Step 2: Trace program execution

        Main calls update(), which adds 50 to total (100 + 50 = 150). Then it prints total, so output is 150.
      3. Final Answer:

        150 -> Option D
      4. Quick Check:

        Extern shares variable; function updates value [OK]
      Hint: Extern shares variable; function changes value before print [OK]
      Common Mistakes:
      • Expecting original value without update
      • Forgetting to declare extern
      • Confusing declaration and definition
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard