summaryrefslogtreecommitdiff
path: root/reference/C/SYNTAX/functions.html
diff options
context:
space:
mode:
Diffstat (limited to 'reference/C/SYNTAX/functions.html')
-rw-r--r--reference/C/SYNTAX/functions.html138
1 files changed, 138 insertions, 0 deletions
diff --git a/reference/C/SYNTAX/functions.html b/reference/C/SYNTAX/functions.html
new file mode 100644
index 0000000..1f14822
--- /dev/null
+++ b/reference/C/SYNTAX/functions.html
@@ -0,0 +1,138 @@
+<title>Functions and passing arguments.</title>
+<head>
+<script language="JavaScript">
+</script>
+</head>
+<body bgcolor="#ffffcc">
+<center>
+<hr>
+<h1>Functions and passing arguments.</h1>
+<hr>
+</center>
+A function is a block of code that can be executed many times by other
+functions or its self.
+<ul>
+<li><a href=#2.1>Function basics.</a>
+<li><a href=#2.2>Declaration.</a>
+<li><a href=#2.3>Definition.</a>
+<li><a href=#2.4>Passing values.</a>
+<li><a href=#2.5>Passing pointers.</a>
+<li><a href=#2.6>Passing Arrays.</a>
+<li><a href=#2.7>Variable number of parms</a>
+<li><a href=#2.8>Function recurssion.</a>
+<li><a href=#2.9>Returning values.</a>
+<li><a href=#2.10>Returning pointers.</a>
+<font color="brown">
+<li> C++ <a href="../../CPLUSPLUS/CONCEPT/reference_variable.html">Reference variables</a>
+<li> C++ <a href="../../CPLUSPLUS/CONCEPT/fundefault.html">Default parameters.</a>
+<li> C++ <a href="../../CPLUSPLUS/CONCEPT/funcoverload.html">Function Overloading.</a>
+</font>
+</ul>
+
+<hr>
+<a name=2.1><h2>Function Basics.</h2>
+You should already understand the concept of functions! If you don't, you
+are a sad sad man....<p>
+Might expand on this one day.<p>
+P.S. main() is a function.
+
+<a name=2.2><h2>Declaration.</h2>
+Just like variables, all functions have to be
+<a href="../glossary.html#declaration">declared</a> before use. Here is an
+example.
+<pre>
+ int add( int, int);
+</pre>
+This statement declares a function called <b>add</b>, it has two integer
+arguments and returns an integer.
+
+<a name=2.3><h2>Definition.</h2>
+The <a href="../glossary.html#definition">definition</a> is the meat of the
+function. Heres an <a href="../EXAMPLES/function.c">example.</a>
+
+<a name=2.4><h2>Passing values.</h2>
+Passing values is known as <b>call by value.</b> You actually pass a copy
+of the variable to the function. If the function modifies the copy, the original
+remains unaltered. The previous example demonstarted <b>call by value</b>
+<a name=2.5><h2>Passing pointers.</h2>
+This is known as <b>call by reference</b> and is an area worth spending some
+time on. We do not pass the data to the function, instead we pass a pointer
+to the data. This means that if the function alters the data, the original
+is altered.<p>
+<dd><img src="../../GRAPHICS/whiteball.gif">
+<a href="../EXAMPLES/pointer_func.c"> Example of passing a pointer to a scalar.</a>
+<p>
+
+<font color=brown>
+C++ has a nice feature called
+<a href="../../CPLUSPLUS/CONCEPT/reference_variable.html">reference variables</a>
+which is a tider
+approch to modifing the contents of a passed variable.
+</font>
+
+<a name=2.6><h2>Passing Arrays.</h2>
+<dd><img src="../../GRAPHICS/whiteball.gif">
+<a href="../EXAMPLES/pointer1_func.c"> Example of passing a pointer to an integer array.</a>
+<dd><img src="../../GRAPHICS/whiteball.gif">
+<a href="../EXAMPLES/pointer2_func.c"> Example of passing a pointer to a two
+dimensional integer array.</a>
+<dd><img src="../../GRAPHICS/whiteball.gif">
+<a href="../EXAMPLES/pointer3_func.c"> Example of passing a pointer to a
+character array.</a>
+<dd><img src="../../GRAPHICS/whiteball.gif">
+<a href="../EXAMPLES/pointer4_func.c"> Example of passing a two dimensional
+character array.</a>
+<h2><a name=2.7>Variable number of parms (...)</a></h2>
+
+<dd><img src="../../GRAPHICS/whiteball.gif">
+<a href="../EXAMPLES/var_func.c"> Example of passing an unknown number
+of variables to a function</a>
+
+<dd><img src="../../GRAPHICS/man.gif">
+<a href="../MAN/va_start.htm"> Man page for va_start, va_end etc</a>
+
+<a name=2.8><h2>Function recurssion.</h2>
+<a name=2.9><h2>Returning values.</h2>
+
+Normally you would return an 'int', 'char', 'float', or 'double' using this
+technic. The obvious time to return a value would be to return a completion
+code.
+<p>
+Here is an <a href="../EXAMPLES/function.c">example</a>
+<p>
+The contents of 'c' are copied into 'i'.
+
+<a name=2.10><h2>Returning pointers.</h2>
+
+Returning values is OK for the data types above but not very practical for
+'char *' or structures. For these data types passing pointers can be more
+appropriate. When using these pointers it is important to understand the
+'<a href="../CONCEPT/storage_class.html#static2">static</a>' storage class
+otherwise you are going to get some unpredictable
+results.
+
+<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>