diff options
Diffstat (limited to 'reference/C/SYNTAX/const.html')
-rw-r--r-- | reference/C/SYNTAX/const.html | 212 |
1 files changed, 212 insertions, 0 deletions
diff --git a/reference/C/SYNTAX/const.html b/reference/C/SYNTAX/const.html new file mode 100644 index 0000000..3ca3683 --- /dev/null +++ b/reference/C/SYNTAX/const.html @@ -0,0 +1,212 @@ +<head> +<title>The const keyword.</title> + +<script language="JavaScript"> +</script> +</head> + +<body bgcolor="#ffffcc"> +<hr> +<center> +<h1>The const keyword.</h1> +</center> +<hr> + +The const keyword is used to create a read only variable. Once initialised, +the value of the variable cannot be changed but can be used just like +any other variable. + +<h2>const syntax</h2> +<p> +<center> +<table bgcolor=ivory width="80%" border=1> +<tr><td> +<pre> + + main() + { + const float pi = 3.14; + } +</pre> +</td></tr> +</table> +</center> +<p> +The const keyword is used as a qualifier to the following data types - +int float char double struct. +<p> +<center> +<table bgcolor=ivory width="80%" border=1> +<tr><td> +<pre> + + const int degrees = 360; + const float pi = 3.14; + const char quit = 'q'; +</pre> +</td></tr> +</table> +</center> +<p> +<h2>const and pointers.</h2> + +Consider the following example. +<p> +<center> +<table bgcolor=ivory width="80%" border=1> +<tr><td> +<pre> + + void Func(const char *Str); + + main() + { + char *Word; + + Word = (char *) malloc(20); + + strcpy(Word, "Sulphate"); + + Func(Word); + } + + void Func(const char *Str) + { + } +</pre> +</td></tr> +</table> +</center> +<p> +The <code>const char *Str</code> tells the compiler that the DATA the +pointer points too is <code>const</code>. This means, Str can be changed +within Func, but *Str cannot. As a copy of the pointer is passed to Func, +any changes made to Str are not seen by main.... + +<p> +<center> +<table bgcolor=ivory width="80%" border=1> +<tr><td> +<pre> + + -------- + | Str | Value can be changed + -----|-- + | + | + V + -------- + | *Str | Read Only - Cannot be changed. + -------- +</pre> +</td></tr> +</table> +</center> +<p> + +<h2>Geeky Stuff</h2> + +It is still possible to change the contents of a 'const' variable. +<a href=../EXAMPLES/const2.c>Consider this program</a> it creates +a const variable and then changes its value by accessing the data by +another name. +<p> +I am not sure if this applies to all compilers, but, +you can place the 'const' after the datatype, for example: +<p> +<center> +<table bgcolor=ivory width="80%" border=1> +<tr><td> +<pre> + + int const degrees = 360; + float const pi = 3.14; + char const quit = 'q'; +</pre> +</pre> +</td></tr> +</table> +</center> +<p> +are all valid in 'gcc'. +<p> +<h2>More Geeky Stuff</h2> + +What would you expect these to do? +<p> +<center> +<table bgcolor=ivory width="80%" border=1> +<tr><td> +<pre> + + main() + { + const char * const Variable1; + char const * const Variable2; + }; +</pre> +</td></tr> +</table> +</center> +<p> +These both make the pointer and the data read only. +Here are a few more examples. +<p> +<center> +<table bgcolor=ivory width="80%" border=1> +<tr><td> +<pre> + + const int Var; /* Var is constant */ + int const Var; /* Ditto */ + int * const Var; /* The pointer is constant, + * the data its self can change. */ + const int * Var; /* Var can not be changed. */ + +</pre> +</td></tr> +</table> +</center> +<p> + +<hr> +<h2>See Also.</h2> +<img src="../../GRAPHICS/whiteball.gif" alt="o"> +<a href="../SYNTAX/define_preprocessor.html">#define preprocessor</a> +<p> +<font color=brown> +<img src="../../GRAPHICS/whiteball.gif" alt="o"> +C++ version of +<a href="../../CPLUSPLUS/SYNTAX/const.html">const</a> +</font> + +<hr> +<h2>An Example.</h2> +<img src="../../GRAPHICS/computer.gif" alt="o"> +<a href=../EXAMPLES/const.c> const</a> example. + +<p> + +<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="../master_index.html"> Master Index</a> +</td><td width="25%"> +<a href="keywords.html"> Keywords</a> +</td><td width="25%"> +<a href="../FUNCTIONS/funcref.htm"> Functions</a> +</td> +</tr> +</table> +</center> +<p> +<hr> +<address>Martin Leslie +</address><p> +</body> +</html> |