I don't understand why when bar is called it writes to same stack location as "foo" for local variable?
Unsure why this does output
$ gcc -O 3 test.c -o mytest local foo is 10 local foo is 12
. Thanks
#include <stdio.h>
int foo(int initialize, int val)
{
int local;
if (initialize) {
local = val;
} else {
printf("local foo is %d\n", local);
}
}
int bar(int initialize, int val)
{
int local;
if (initialize) {
local = val;
} else {
printf("local bar is %d\n", local);
}
}
int main()
{
foo(1, 10); //set to 10
foo(0, 0); //print it
bar(1, 12); //set to 12
foo(0, 0); //print foo again
return 0;
}