/* * SCOPE -- program to demonstrate how scope works in C * it does nothing else * * Usage: scope * * Inputs: none * Output: printing showing value of variable at various points * in the program * Exit Code: EXIT_SUCCESS (0) because all goes well * * written for ECS 030, Fall 2015 * * Matt Bishop, Oct. 14, 2015 * original program written */ #include #include /* * forward declarations */ void g(int); void h(void); /* the top-level definition */ int variable = 1; /* * the main routine */ int main(void) { /* scope is function main */ int variable = 2; printf("main(%d):variable = %d\n", __LINE__, variable); /* now an inner block */ { /* scope is the rest of this block */ int variable = 3; printf("main(%d):variable = %d\n", __LINE__, variable); /* now an even more inner block */ { /* scope is this block */ extern int variable; printf("main(%d):variable = %d\n", __LINE__, variable); } /* end innermost block */ printf("main(%d):variable = %d\n", __LINE__, variable); } /* end inner block -- back to main block */ printf("main(%d):variable = %d\n", __LINE__, variable); /* now let's show how functions interact with scope */ g(variable); /* bye! */ return(EXIT_SUCCESS); } /* * now notice "variable" is a parameter * so it (effectively) overrides references to the * top-level variable) */ void g(int variable) { printf("g(%d):variable = %d\n", __LINE__, variable); /* now let's call another function */ h(); } /* * this function has no declarations, so * let's see what it prints */ void h(void) { printf("h(%d):variable = %d\n", __LINE__, variable); }