CS152
Chris Pollett
Mar. 4, 2009
int x; void p() { char x; x='a' //assigns to char x } void main(){ x=2; //assigns to global x }
name : declare ... begin ... end
extern int a;indicates the program will be linked to another compiled file where a had global scope.
int x; char y; // (*) void p() { double x; ... // (**) { int y[10]; // (***) } } // (****) void q() { int y; /* (#) */} // (##) int main() {char x; /* (###) */}
(x, (double local to p), (int global)) (y, (char global)) (p, (void function))
(x, (double local to p), (int global)) (y, (int array local to nested block in p), (char global)) (p, (void function))
(x, (int global)) (y, (char global)) (p, (void function))
(x, (int global)) (y, (int local to q), (char global)) (p, (void function)) (q, (void function))
#include <stdio.h> int x = 1; char y = 'a'; void p() { double x = 2.5; printf("%c\n", y); // (***) { int y[10]; } } void q() { int y = 42; printf("%d\n", x); //(**) p(); } int main() { char x= 'b'; // (*) q(); return 0; }
(x, (char = 'b' local to main), (int = '1' global)) (y, (char = 'a' global)) (p, (void function)) (q, (void function)) (main, (int function))
(x, (char = 'b' local to main), (int = '1' global)) (y, (int = 42 local to q), (char = 'a' global)) (p, (void function)) (q, (void function)) (main, (int function))