summaryrefslogtreecommitdiff
path: root/reference/CPLUSPLUS/CONCEPT/local_var.html
blob: f6cb99469c90fb927098943da26e143aec37d2c6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
<html>
<head>
<title>C++ Local Variables.</title>
</head>
<body bgcolor="#dddddd">
<font color=brown>
<hr>
<center><h1>C++ Local Variables.</h1></center>
<hr>
<p>

There is not much difference between 
<a href=../../C/SYNTAX/glo_int_vars.html> C local variables</a> but there
is one important feature that should be noted.
<ul>
<li>Variable definitions are now considered to be executable statements.
</ul>
This means that you can now put variable definitions anywhere in the code 
and not jut at the start of a 
<a href=../../C/glossary.html#block>block.</a>
Here is an example.

<p>
<center>
<table bgcolor=ivory width="80%" border=1>
<tr><td>
<pre>

    main()
    {
        float pi = 3.142;   // Usual location for variable definitions
        
        cout << "PI is " << pi << endl;
        
        int Count = 1;      // C++ allows us to place a definition here.
        
        while (Count < 10)
        {
            cout << Count << endl;
        }
    }
</pre>
</td></tr>
</table>
</center>
<p>

It should be noted that <b>Count</b> is only in scope (usable) from the 
point of definition and to the end of the block.
It can not be used in the previous <b>cout</b> statement.  
<p>

The idea of this feature is to allow you to put variable declarations 
near to the place 
you wish to use them. Personnaly, I feel this should not be neccasary
if you write small concise functions....

There is one natty feature of this facility though. Check this 
example out.
<p>
<center>
<table bgcolor=ivory width="80%" border=1>
<tr><td>
<pre>

    main()
    {
        int Last = 10;      
        
        while (int Count; Count < Last; Count++)
        {
            cout << Count << endl;
        }
    }
</pre>
</td></tr>
</table>
</center>
<p>
In this example, <b>Count</b> is defined inside the <b>for</b> 
statement and only exists while the for block is being executed.


<p>
<hr>
<h2>Examples:</h2>
<!--
<img src="../../GRAPHICS/computer.gif" alt="o">
<a href="../EXAMPLES/refvar.cc">Example program.</a>
<p>

<font color=brown>
<img src="../../GRAPHICS/computer.gif" alt="o">
<a href="../../C/EXAMPLES/pointer_func.c">Example C program.</a>
</font>
-->

<hr>
<h2>See Also:</h2>

</font>
<hr>
<font color=black>
<h2>C References</h2>
<p>

<img src="../../GRAPHICS/whiteball.gif" alt="o">
<a href=../../C/SYNTAX/glo_int_vars.html> C local variables</a>
<p>
<img src="../../GRAPHICS/whiteball.gif" alt="o">
<a href="../../C/CONCEPT/data_types.html">data types</a>.

</font>

<hr>
<p>
<center>
<table border=2 width="80%" bgcolor="ivory">
<tr align=center>
<td width="25%">
<a href="../cref.html">Top</a>
</td><td width="25%">
<a href="../../C/master_index.html">Master Index</a>
</td><td width="25%">
<a href="../SYNTAX/keywords.html">Keywords</a>
</td><td width="25%">
<a href="../../C/FUNCTIONS/funcref.htm">Functions</a>
</td>
</tr>
</table>
</center>
<p>
<hr>
<font color=brown>
<address>Martin Leslie 
<script language="JavaScript">
<!--  //
document.write(document.lastModified);
// -->
</script>
</address><p>
</font>
</body>
</html>