When a procedure does not call other procedures,
the scope and lifetime of a variable are similar.
When a procedure calls other procedures, the scope and lifetime
of a variable are different.
See the following example.
void printheader() //Page 222
{
....
} /* end of printheader */
void compute()
{
int sum;
....
printheader();
} /* end of compute */
The scope of sum does not extend to the body of printheader().
It is only in compute().
The lifetime of sum extend over the execution time of printheader().
The storage bound until whole compute() completed.
It includes running printheader statement.