// Scoping example for C #include int g = 1; int h = 2; // parameter and local variable shadow g and h int f1(int g) { int h = 12; // shadows global h int i = 13; // have to declare it to use it printf("g, h in f1(): %d %d %d\n", g, h, i); return(5); } // global g and h are available in f2 int f2() { int i = 103; // have to declare it to use it printf("g, h in f2(): %d %d %d\n", g, h, i); } int main(int argc, char *argv[]) { int g = 21; // shadows global g int h = 22; // shadows global h int i = 23; // declares i printf("g, h in main(): %d %d %d\n", g, h, i); { int g = 31; // shadows prior g int h = 32; // shadows prior h printf("g, h, i in main() block: %d %d %d\n", g, h, i); { int g = 41; // shadows prior g int h = 42; // shadows prior h printf("g, h, i in main() block block: %d %d %d\n", g, h, i); f1(51); f2(); } f1(61); f2(); } f1( 11 ); f2(); return(-1); }