C++ has changed the rules regarding where you can define a local variable. Click here for the low down.
When a local variable is defined - it is not initalised by the system, you must initalise it yourself.
A local variable is defined inside a block and is only visable from within the block.
main() { int i=4; i++; } |
When execution of the block starts the variable is available, and when the block ends the variable 'dies'.
A local variable is visible within nested blocks unless a variable with the same name is defined within the nested block.
main() { int i=4; int j=10; i++; if (j > 0) { printf("i is %d\n",i); /* i defined in 'main' can be seen */ } if (j > 0) { int i=100; /* 'i' is defined and so local to * this block */ printf("i is %d\n",i); } /* 'i' (value 100) dies here */ printf("i is %d\n",i); /* 'i' (value 5) is now visable. */ } |
Global variables ARE initalised by the system when you
define
them!
In the next example i is a global variable, it can be seen and modified by
main and any other functions that may reference it.
Now, this example has global and Internal variables.
i in main is global and will be incremented to 5. i in
func is internal and will be incremented to 11. When control returns
to main the internal variable will die and and any reference to
i will
be to the global.
static variables can be 'seen' within all functions in this source file. At
link time, the static variables defined here will not be seen by the object
modules that are brought in.
Global variables
C++ has enhanced the use of
global variables.
Data Type Initialser int 0 char '\0' float 0 pointer NULL
int i=4;
main()
{
i++;
}
int i=4; /* Global definition */
main()
{
i++; /* global variable */
func
}
func()
{
int i=10; /* Internal declaration */
i++; /* Internal variable */
}
Example:
An Example program.
Top | Master Index | Keywords | Functions |