// Steve J Hodges, Fall 2003 // CS19 example program // demonstrates Scope (visibility) and Storage Class (lifetime) // don't do "this" -> variables that mask one another in // confusing ways // ... and don't use global variables, either // scoping.cpp #include using namespace std; // fn headers void someFn(); void nextFn(); void lastFn(); // global variable -- BAD !!!! int i = 42; main(){ cout << "i is " << i << endl; someFn(); nextFn(); lastFn(); cout << "i is " << i << endl; } void someFn(){ int i=50; // a local "auto" variable cout << "in someFn" << endl; cout << "i is " << i << endl; for (int i=0;i<10;i++){ // a block-scope local variable cout << "i is " << i << endl; } // loop is over "i" disapears... // back to previous "i" here cout << "i is " << i << endl; } void nextFn(){ cout << "in nextFn()" << endl; cout << "i is " << i << endl; int i = 99; cout << "i is " << i << endl; } void lastFn(){ cout << "in lastFn()" << endl; i = 237; }