Does the use of a global variable within a function cause a local copy to be created

Unfortunately I can’t find anything on the subject although I can’t believe this question hasn’t been asked before.

When I use a global variable inside a function, is a local copy of the variable created as with a passed argument or is the global variable accessed directly?
Does it even make sense to define a global variable as a parameter of a function using the reference declarator & or as a pointer *?

PS: I know that global variables are a bad practice, but I’m programming for a microcontroller where it sometimes make sense to use global variables.

>Solution :

Globals are not copied when used in a function. There are used directly. For example:

#include <stdio.h>

int x;

void foo1()

void foo2()
    printf("%d\n", x);

int main()
    return 0;



The first function modifies x, and the second reads the modified x and prints it.

If globals were in fact copied in each function, it would be impossible to modify them, and the above code would instead print 0.

Leave a Reply