Variables in the C programming language, which Arduino uses, have a property called "scope". This is in contrast to languages such as BASIC where every variable is a global variable.
A global variable is one that can be seen by every function in a program. Local variables are only visible to the function in which they are declared. In the Arduino environment, any variable declared outside of a function (e.g. setup(), loop() ), is a global variable.
When programs start to get larger and more complex, local variables are a useful way to insure that only one function has access to its variables. This prevents programming errors when one function inadvertently modifies variables used by another function.
int gPWMval; // any function will see this variable void setup() { // ... } void loop() { int i; // "i" is only "visible" inside of "loop" float f; // "f" is only "visible" inside of "loop" // ... }