C Advanced: Global variables

In the C variables and types post I introduced how to work with variables.

In this post I want to mention the difference between global and local variables.

A local variable is defined inside a function, and it’s only available inside that function.

Like this:

#include <stdio.h>

int main(void) {
  char j = 0;
  j += 10;
  printf("%u", j); //10
}

j is not available anywhere outside the main function.

A global variable is defined outside of any function, like this:

#include <stdio.h>

char i = 0;

int main(void) {
  i += 10;
  printf("%u", i); //10
}

A global variable can be accessed by any function in the program. Access is not limited to reading the value: the variable can be updated by any function.

Due to this, global variables are one way we have of sharing the same data between functions.

The main difference with local variables is that the memory allocated for variables is freed once the function ends.

Global variables are only freed when the program ends.

Lessons in this unit:

0: Introduction
1: Input and output
2: Variable scope
3: Static variables
4: ▶︎ Global variables
5: Type definitions
6: Enumerations
7: Structures
8: Command line parameters
9: Header files
10: The preprocessor
11: NULL values
12: Boolean values
13: Nesting functions
14: Conversion specifiers
15: Using quotes
16: String length
17: Returning strings
18: Array length
19: Looping through arrays
20: Checking character values
21: Printing percentage signs
22: Troubleshooting: Implicit function declarations

Join my AI Workshop!

The Web Development BOOTCAMP cohort starts in February 2026