summaryrefslogtreecommitdiff
path: root/reference/C/SYNTAX
diff options
context:
space:
mode:
Diffstat (limited to 'reference/C/SYNTAX')
-rw-r--r--reference/C/SYNTAX/Makefile.am5
-rw-r--r--reference/C/SYNTAX/Makefile.in410
-rw-r--r--reference/C/SYNTAX/Master.html54
-rw-r--r--reference/C/SYNTAX/break.html54
-rw-r--r--reference/C/SYNTAX/comma.html60
-rw-r--r--reference/C/SYNTAX/comments.html111
-rw-r--r--reference/C/SYNTAX/conditional.html120
-rw-r--r--reference/C/SYNTAX/const.html212
-rw-r--r--reference/C/SYNTAX/continue.html46
-rw-r--r--reference/C/SYNTAX/define_preprocessor.html77
-rw-r--r--reference/C/SYNTAX/do.html81
-rw-r--r--reference/C/SYNTAX/enum.html97
-rw-r--r--reference/C/SYNTAX/for.html175
-rw-r--r--reference/C/SYNTAX/fork1.c24
-rw-r--r--reference/C/SYNTAX/functions.html138
-rw-r--r--reference/C/SYNTAX/glo_int_vars.html214
-rw-r--r--reference/C/SYNTAX/got_ya.html80
-rw-r--r--reference/C/SYNTAX/goto.html59
-rw-r--r--reference/C/SYNTAX/idioms.html136
-rw-r--r--reference/C/SYNTAX/if.html133
-rw-r--r--reference/C/SYNTAX/include_preprocessor.html61
-rw-r--r--reference/C/SYNTAX/keywords.html115
-rw-r--r--reference/C/SYNTAX/logical.html102
-rw-r--r--reference/C/SYNTAX/macros.html96
-rw-r--r--reference/C/SYNTAX/namespace.html46
-rw-r--r--reference/C/SYNTAX/null.html81
-rw-r--r--reference/C/SYNTAX/preprocessors.html83
-rw-r--r--reference/C/SYNTAX/return.html134
-rw-r--r--reference/C/SYNTAX/sizeof.html130
-rw-r--r--reference/C/SYNTAX/statements.html90
-rw-r--r--reference/C/SYNTAX/static.htm175
-rw-r--r--reference/C/SYNTAX/storage_class.html187
-rw-r--r--reference/C/SYNTAX/struct.html392
-rw-r--r--reference/C/SYNTAX/switch.html233
-rw-r--r--reference/C/SYNTAX/syntax.gifbin0 -> 888 bytes
-rw-r--r--reference/C/SYNTAX/syntax.html135
-rw-r--r--reference/C/SYNTAX/syntax_p.html110
-rw-r--r--reference/C/SYNTAX/typedef.html140
-rw-r--r--reference/C/SYNTAX/union.html89
-rw-r--r--reference/C/SYNTAX/void.html104
-rw-r--r--reference/C/SYNTAX/volatile.html97
-rw-r--r--reference/C/SYNTAX/while.html160
42 files changed, 5046 insertions, 0 deletions
diff --git a/reference/C/SYNTAX/Makefile.am b/reference/C/SYNTAX/Makefile.am
new file mode 100644
index 0000000..9bfe8ac
--- /dev/null
+++ b/reference/C/SYNTAX/Makefile.am
@@ -0,0 +1,5 @@
+EXTRA_DIST = $(wildcard *.html) $(wildcard *.c) $(wildcard *.gif)
+docs_DATA = $(EXTRA_DIST)
+
+docsdir = $(kde_htmldir)/en/kdevelop/$(subdir)
+
diff --git a/reference/C/SYNTAX/Makefile.in b/reference/C/SYNTAX/Makefile.in
new file mode 100644
index 0000000..bb58959
--- /dev/null
+++ b/reference/C/SYNTAX/Makefile.in
@@ -0,0 +1,410 @@
+# KDE tags expanded automatically by am_edit - $Revision: 1.2 $
+# Makefile.in generated automatically by automake 1.5 from Makefile.am.
+
+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
+# Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+SHELL = @SHELL@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+prefix = @prefix@
+exec_prefix = @exec_prefix@
+
+bindir = @bindir@
+sbindir = @sbindir@
+libexecdir = @libexecdir@
+datadir = @datadir@
+sysconfdir = @sysconfdir@
+sharedstatedir = @sharedstatedir@
+localstatedir = @localstatedir@
+libdir = @libdir@
+infodir = @infodir@
+mandir = @mandir@
+includedir = @includedir@
+oldincludedir = /usr/include
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ../../..
+
+ACLOCAL = @ACLOCAL@
+AUTOCONF = @AUTOCONF@
+AUTOMAKE = @AUTOMAKE@
+AUTOHEADER = @AUTOHEADER@
+
+INSTALL = @INSTALL@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = @program_transform_name@
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_alias = @build_alias@
+build_triplet = @build@
+host_alias = @host_alias@
+host_triplet = @host@
+target_alias = @target_alias@
+target_triplet = @target@
+AMTAR = @AMTAR@
+ARTSCCONFIG = @ARTSCCONFIG@
+AS = @AS@
+AUTODIRS = @AUTODIRS@
+AWK = @AWK@
+CC = @CC@
+CONF_FILES = @CONF_FILES@
+CPP = @CPP@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+DCOPIDL = @DCOPIDL@
+DCOPIDL2CPP = @DCOPIDL2CPP@
+DCOP_DEPENDENCIES = @DCOP_DEPENDENCIES@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DPMSINC = @DPMSINC@
+DPMSLIB = @DPMSLIB@
+EXEEXT = @EXEEXT@
+GCJ = @GCJ@
+GCJFLAGS = @GCJFLAGS@
+GLINC = @GLINC@
+GLLIB = @GLLIB@
+GMSGFMT = @GMSGFMT@
+IDL = @IDL@
+IDL_DEPENDENCIES = @IDL_DEPENDENCIES@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+JAR = @JAR@
+JAVAC = @JAVAC@
+JAVAH = @JAVAH@
+JVMLIBS = @JVMLIBS@
+KDECONFIG = @KDECONFIG@
+KDE_CXXFLAGS = @KDE_CXXFLAGS@
+KDE_EXTRA_RPATH = @KDE_EXTRA_RPATH@
+KDE_INCLUDES = @KDE_INCLUDES@
+KDE_LDFLAGS = @KDE_LDFLAGS@
+KDE_PLUGIN = @KDE_PLUGIN@
+KDE_RPATH = @KDE_RPATH@
+KDE_USE_CLOSURE_FALSE = @KDE_USE_CLOSURE_FALSE@
+KDE_USE_CLOSURE_TRUE = @KDE_USE_CLOSURE_TRUE@
+KDE_USE_FINAL_FALSE = @KDE_USE_FINAL_FALSE@
+KDE_USE_FINAL_TRUE = @KDE_USE_FINAL_TRUE@
+KDE_XSL_STYLESHEET = @KDE_XSL_STYLESHEET@
+LIBCOMPAT = @LIBCOMPAT@
+LIBCRYPT = @LIBCRYPT@
+LIBDL = @LIBDL@
+LIBGEN = @LIBGEN@
+LIBJPEG = @LIBJPEG@
+LIBMICO = @LIBMICO@
+LIBOBJS = @LIBOBJS@
+LIBPNG = @LIBPNG@
+LIBPTHREAD = @LIBPTHREAD@
+LIBPYTHON = @LIBPYTHON@
+LIBQIMGIO = @LIBQIMGIO@
+LIBRESOLV = @LIBRESOLV@
+LIBSHADOW = @LIBSHADOW@
+LIBSM = @LIBSM@
+LIBSOCKET = @LIBSOCKET@
+LIBTIFF = @LIBTIFF@
+LIBTOOL = @LIBTOOL@
+LIBUCB = @LIBUCB@
+LIBUTIL = @LIBUTIL@
+LIBXINERAMA = @LIBXINERAMA@
+LIBZ = @LIBZ@
+LIB_KAB = @LIB_KAB@
+LIB_KDECORE = @LIB_KDECORE@
+LIB_KDEUI = @LIB_KDEUI@
+LIB_KFILE = @LIB_KFILE@
+LIB_KFM = @LIB_KFM@
+LIB_KFORMULA = @LIB_KFORMULA@
+LIB_KHTML = @LIB_KHTML@
+LIB_KIMGIO = @LIB_KIMGIO@
+LIB_KIO = @LIB_KIO@
+LIB_KPARTS = @LIB_KPARTS@
+LIB_KSPELL = @LIB_KSPELL@
+LIB_KSYCOCA = @LIB_KSYCOCA@
+LIB_KWRITE = @LIB_KWRITE@
+LIB_QT = @LIB_QT@
+LIB_SMB = @LIB_SMB@
+LIB_X11 = @LIB_X11@
+LN_S = @LN_S@
+MCOPIDL = @MCOPIDL@
+MEINPROC = @MEINPROC@
+MICO_INCLUDES = @MICO_INCLUDES@
+MICO_LDFLAGS = @MICO_LDFLAGS@
+MOC = @MOC@
+MSGFMT = @MSGFMT@
+NOOPT_CXXFLAGS = @NOOPT_CXXFLAGS@
+NOREPO = @NOREPO@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PAMLIBS = @PAMLIBS@
+PASSWDLIBS = @PASSWDLIBS@
+PYTHONINC = @PYTHONINC@
+PYTHONLIB = @PYTHONLIB@
+PYTHONMODDIR = @PYTHONMODDIR@
+QT_INCLUDES = @QT_INCLUDES@
+QT_LDFLAGS = @QT_LDFLAGS@
+RANLIB = @RANLIB@
+REPO = @REPO@
+SETUIDFLAGS = @SETUIDFLAGS@
+STRIP = @STRIP@
+TOPSUBDIRS = @TOPSUBDIRS@
+UIC = @UIC@
+UIC_TR = @UIC_TR@
+USER_INCLUDES = @USER_INCLUDES@
+USER_LDFLAGS = @USER_LDFLAGS@
+USE_EXCEPTIONS = @USE_EXCEPTIONS@
+USE_RTTI = @USE_RTTI@
+USE_THREADS = @USE_THREADS@
+VERSION = @VERSION@
+XGETTEXT = @XGETTEXT@
+XPMINC = @XPMINC@
+XPMLIB = @XPMLIB@
+X_EXTRA_LIBS = @X_EXTRA_LIBS@
+X_INCLUDES = @X_INCLUDES@
+X_LDFLAGS = @X_LDFLAGS@
+X_PRE_LIBS = @X_PRE_LIBS@
+all_includes = @all_includes@
+all_libraries = @all_libraries@
+am__include = @am__include@
+am__quote = @am__quote@
+idldir = @idldir@
+install_sh = @install_sh@
+jni_includes = @jni_includes@
+kde_appsdir = @kde_appsdir@
+kde_bindir = @kde_bindir@
+kde_confdir = @kde_confdir@
+kde_datadir = @kde_datadir@
+kde_htmldir = @kde_htmldir@
+kde_icondir = @kde_icondir@
+kde_includes = @kde_includes@
+kde_libraries = @kde_libraries@
+kde_libs_htmldir = @kde_libs_htmldir@
+kde_libs_prefix = @kde_libs_prefix@
+kde_locale = @kde_locale@
+kde_mimedir = @kde_mimedir@
+kde_moduledir = @kde_moduledir@
+kde_qtver = @kde_qtver@
+kde_servicesdir = @kde_servicesdir@
+kde_servicetypesdir = @kde_servicetypesdir@
+kde_sounddir = @kde_sounddir@
+kde_templatesdir = @kde_templatesdir@
+kde_wallpaperdir = @kde_wallpaperdir@
+micodir = @micodir@
+qt_includes = @qt_includes@
+qt_libraries = @qt_libraries@
+x_includes = @x_includes@
+x_libraries = @x_libraries@
+
+EXTRA_DIST = $(wildcard *.html) $(wildcard *.c) $(wildcard *.gif)
+docs_DATA = $(EXTRA_DIST)
+
+docsdir = $(kde_htmldir)/en/kdevelop/$(subdir)
+subdir = reference/C/SYNTAX
+mkinstalldirs = $(SHELL) $(top_srcdir)/admin/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+DIST_SOURCES =
+DATA = $(docs_DATA)
+
+DIST_COMMON = Makefile.am Makefile.in
+#>- all: all-am
+#>+ 1
+all: docs-am all-am
+
+.SUFFIXES:
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+distclean-libtool:
+ -rm -f libtool
+$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
+#>- cd $(top_srcdir) && \
+#>- $(AUTOMAKE) --gnu reference/C/SYNTAX/Makefile
+#>+ 3
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu reference/C/SYNTAX/Makefile
+ cd $(top_srcdir) && perl admin/am_edit reference/C/SYNTAX/Makefile.in
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ cd $(top_builddir) && \
+ CONFIG_HEADERS= CONFIG_LINKS= \
+ CONFIG_FILES=$(subdir)/$@ $(SHELL) ./config.status
+uninstall-info-am:
+install-docsDATA: $(docs_DATA)
+ @$(NORMAL_INSTALL)
+ $(mkinstalldirs) $(DESTDIR)$(docsdir)
+ @list='$(docs_DATA)'; for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ f="`echo $$p | sed -e 's|^.*/||'`"; \
+ echo " $(INSTALL_DATA) $$d$$p $(DESTDIR)$(docsdir)/$$f"; \
+ $(INSTALL_DATA) $$d$$p $(DESTDIR)$(docsdir)/$$f; \
+ done
+
+uninstall-docsDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(docs_DATA)'; for p in $$list; do \
+ f="`echo $$p | sed -e 's|^.*/||'`"; \
+ echo " rm -f $(DESTDIR)$(docsdir)/$$f"; \
+ rm -f $(DESTDIR)$(docsdir)/$$f; \
+ done
+tags: TAGS
+TAGS:
+
+
+#>- DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+#>+ 4
+KDE_DIST=if.html static.htm include_preprocessor.html sizeof.html comma.html syntax.gif idioms.html syntax.html conditional.html define_preprocessor.html glo_int_vars.html typedef.html while.html for.html volatile.html break.html return.html comments.html namespace.html syntax_p.html keywords.html functions.html switch.html void.html logical.html goto.html null.html fork1.c struct.html union.html Master.html statements.html enum.html macros.html const.html storage_class.html got_ya.html do.html preprocessors.html continue.html
+
+DISTFILES= $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) $(KDE_DIST)
+
+
+top_distdir = ../../..
+distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
+
+distdir: $(DISTFILES)
+ @for file in $(DISTFILES); do \
+ if test -f $$file; then d=.; else d=$(srcdir); fi; \
+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+ $(mkinstalldirs) "$(distdir)/$$dir"; \
+ fi; \
+ if test -d $$d/$$file; then \
+ cp -pR $$d/$$file $(distdir) \
+ || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile $(DATA)
+
+installdirs:
+ $(mkinstalldirs) $(DESTDIR)$(docsdir)
+
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]*
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+#>- clean: clean-am
+#>+ 1
+clean: kde-rpo-clean clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+
+distclean-am: clean-am distclean-generic distclean-libtool
+
+dvi: dvi-am
+
+dvi-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-docsDATA
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+uninstall-am: uninstall-docsDATA uninstall-info-am
+
+.PHONY: all all-am check check-am clean clean-generic clean-libtool \
+ distclean distclean-generic distclean-libtool distdir dvi \
+ dvi-am info info-am install install-am install-data \
+ install-data-am install-docsDATA install-exec install-exec-am \
+ install-info install-info-am install-man install-strip \
+ installcheck installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-generic \
+ mostlyclean-libtool uninstall uninstall-am uninstall-docsDATA \
+ uninstall-info-am
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
+
+#>+ 2
+docs-am:
+
+#>+ 6
+force-reedit:
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu reference/C/SYNTAX/Makefile
+ cd $(top_srcdir) && perl admin/am_edit reference/C/SYNTAX/Makefile.in
+
+
+#>+ 2
+final:
+ $(MAKE) all-am
+#>+ 2
+final-install:
+ $(MAKE) install-am
+#>+ 2
+no-final:
+ $(MAKE) all-am
+#>+ 2
+no-final-install:
+ $(MAKE) install-am
+#>+ 3
+cvs-clean:
+ $(MAKE) -f $(top_srcdir)/admin/Makefile.common cvs-clean
+
+#>+ 3
+kde-rpo-clean:
+ -rm -f *.rpo
diff --git a/reference/C/SYNTAX/Master.html b/reference/C/SYNTAX/Master.html
new file mode 100644
index 0000000..7e32a47
--- /dev/null
+++ b/reference/C/SYNTAX/Master.html
@@ -0,0 +1,54 @@
+<title>XXX</title>
+
+<head>
+<script language="JavaScript">
+</script>
+</head>
+
+<body bgcolor="ffffcc">
+<hr>
+<center>
+<h1>XXXX</h1>
+</center>
+<hr>
+<b>XXXX</b>
+<p>
+<hr>
+</pre>
+<hr>
+<h2>Examples:</h2>
+
+<img src="../../GRAPHICS/computer.gif"><a href="../EXAMPLES/malloc.c"> example</a>
+program.
+
+<hr>
+<h2>See Also:</h2>
+
+<img src="../../GRAPHICS/whiteball.gif">
+<a href="../FUNCTIONS/malloc.html">malloc</a> function.<p>
+
+<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
diff --git a/reference/C/SYNTAX/break.html b/reference/C/SYNTAX/break.html
new file mode 100644
index 0000000..46bbfef
--- /dev/null
+++ b/reference/C/SYNTAX/break.html
@@ -0,0 +1,54 @@
+<title>The break statement</title>
+
+<head>
+<script language="JavaScript">
+</script>
+</head>
+
+<body bgcolor="#ffffcc">
+<hr>
+<center>
+<h1>The break statement.</h1>
+</center>
+<hr>
+<p>
+This statement allows the program to escape from <a href=for.html>for</a>,
+<a href=while.html>while</a>,
+<a href=do.html>do ... while</a> loops and <a href=switch.html>switch</a> structures.
+<p>
+
+It should NOT be used to escape from an <a href=if.html>if</a> block.
+<p>
+
+<hr>
+<h2>Examples</h2>
+
+<img src="../../GRAPHICS/computer.gif">
+<a href="../EXAMPLES/switch.c">
+ Switch example.</a>
+
+<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
diff --git a/reference/C/SYNTAX/comma.html b/reference/C/SYNTAX/comma.html
new file mode 100644
index 0000000..fad68e6
--- /dev/null
+++ b/reference/C/SYNTAX/comma.html
@@ -0,0 +1,60 @@
+<title>The COMMA.</title>
+<head>
+<script language="JavaScript">
+</script>
+</head>
+<body bgcolor="#ffffcc">
+<hr>
+<center><h1>The COMMA.</h1></center>
+<hr>
+The comma has two uses. The most comman, is as a parameter seperator
+for <a href="../CONCEPT/data_types.html">data types</a> and
+<a href="functions.html">function</a> parameter lists.
+Here is an example:
+<pre>
+ main()
+ {
+ char String1[20], String2[]="Outback Pub"; /* <a href="../CONCEPT/data_types.html">data types</a> */
+ strncpy(String1, string2, 7);
+ }
+</pre>
+The other use is as a <b>series operator</b> which can be seen in use with
+the <a href="for.html">for</a> keyword. An example of the syntax is shown
+in the link below.
+
+<hr>
+<h2>Examples:</h2>
+
+<img src="../../GRAPHICS/computer.gif">
+<a href="../EXAMPLES/for2.c">Example of the <b>series operator</b></a>.
+
+<hr>
+<h2>See also:</h2>
+
+Nothing else to see :-(
+
+<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
diff --git a/reference/C/SYNTAX/comments.html b/reference/C/SYNTAX/comments.html
new file mode 100644
index 0000000..d3ff791
--- /dev/null
+++ b/reference/C/SYNTAX/comments.html
@@ -0,0 +1,111 @@
+<head>
+<title>Comments.</title>
+<script language="JavaScript">
+</script>
+</head>
+
+<body bgcolor="#ffffcc">
+<hr>
+<center>
+<h1>Comments.</h1>
+</center>
+<hr>
+<p>
+Lets start with a few examples.
+<p>
+<center>
+<table border=2 width="80%" bgcolor=ivory>
+<tr>
+<td>
+<pre>
+
+ main()
+ {
+
+ int Counter=0; /* Initalise Counter */
+
+ /* a comment */
+
+ /*
+ * Another comment
+ */
+
+ /*****************
+ *
+ * Final comment.
+ *
+ *****************/
+ }
+</pre>
+</td>
+</tr>
+</table>
+</center>
+<p>
+<hr>
+<p>
+A comment starts with a <b>/*</b> and
+ends with <b>*/</b>. Comments started in this way can span multiple
+lines but cannot be nested.
+For example:
+<p>
+<center>
+<table border=2 width="80%" bgcolor=ivory>
+<tr>
+<td>
+<pre>
+
+ main()
+ {
+ int Count = 0; /* Initalise
+ * Counter to 0 */
+
+ /* /* Invalid comment */ */
+ }
+</pre>
+</td>
+</tr>
+</table>
+</center>
+<p>
+This will give a syntax error, because the last line
+contains nested comments.
+<font color=brown>
+C++ offers a solution to
+<a href="../../CPLUSPLUS/SYNTAX/comment.html">comment nesting.</a>
+
+<p>
+<a name="c++">
+<hr>
+<font color=brown>
+<h2>C++ Extension</h3>
+<img src="../../GRAPHICS/whiteball.gif">
+<a href="../../CPLUSPLUS/SYNTAX/comment.html">Inline comments</a>
+</font>
+<p>
+
+<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>
diff --git a/reference/C/SYNTAX/conditional.html b/reference/C/SYNTAX/conditional.html
new file mode 100644
index 0000000..45b39af
--- /dev/null
+++ b/reference/C/SYNTAX/conditional.html
@@ -0,0 +1,120 @@
+<title>Conditional Expressions</title>
+
+<head>
+<script language="JavaScript">
+</script>
+</head>
+
+<body bgcolor="#ffffcc">
+<hr>
+<center>
+<h1>Conditional Expressions.</h1>
+</center>
+<hr>
+<p>
+
+
+We have a short-hand construct for some <b>if ... else ...</b> constructs.<p>
+Consider the following two examples.
+<p>
+<center>
+<table border=2 bgcolor=ivory>
+<th>Example 1</th>
+<th>Example 2</th>
+<tr>
+<td>
+<pre>
+
+ if ( x == 1 )
+ y = 10;
+ else
+ y = 20;
+
+</pre>
+</td>
+<td>
+<pre>
+
+ y = (x == 1) ? 10 : 20;
+
+</pre>
+</td>
+</tr>
+</table>
+</center>
+<p>
+These examples both perform the same function. If x is 1 then y becomes 10
+else y becomes 20. The example on the right evaluates the first expression
+'(x ==1 )' and if <b>true</b> evaluates the second '10'. If <b>false</b> the
+third is evaluated. Here is another example.
+<p>
+<center>
+<table border=2 bgcolor=ivory>
+<th>Example 1</th>
+<th>Example 2</th>
+<tr>
+<td>
+<pre>
+
+ if ( x == 1 )
+ puts("take car");
+ else
+ puts("take bike");
+</pre>
+</td>
+<td>
+<pre>
+
+ (x == 1) ? puts("take car") : puts("take bike");
+
+ or
+
+ puts( (x == 1) ? "take car" : "take bike");
+</pre>
+</td>
+</tr>
+</table>
+</center>
+<p>
+It has been said that the compiler can create more efficent code from
+a <b>conditional expression</b> possibly at the expence of readable code.
+Unless you are writing time critical code (and lets face it, thats unlikely)
+the more efficent code is not much of a reason to use this construct.
+I feel that it has its uses, but should not be lost into some complex
+statement,
+but, since when did C programmers worry if anyone else could read their
+code ;-)
+<p>
+<hr>
+<h2>See also:</h2>
+<ul>
+<li><a href="if.html">if</a> keyword.
+<li><a href="switch.html">switch</a> keyword.
+<li><a href="idioms.html#printf">A use within printf.</a>.
+</ul>
+
+<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>
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>
diff --git a/reference/C/SYNTAX/continue.html b/reference/C/SYNTAX/continue.html
new file mode 100644
index 0000000..7c8d22a
--- /dev/null
+++ b/reference/C/SYNTAX/continue.html
@@ -0,0 +1,46 @@
+<title>The continue statement</title>
+<head>
+<script language="JavaScript">
+</script>
+</head>
+<body bgcolor="#ffffcc">
+<hr>
+<center>
+<h1>The continue statement </h1>
+</center>
+<hr>
+continue allows a new iteration of a loop without the current iteration
+completing. For example you could filter records from a file with
+the 'continue' statement.
+<p>
+<a href="../EXAMPLES/continue.c"><img src="../../GRAPHICS/computer.gif"></a>
+continue example.<p>
+
+continue is related to the <a href="break.html">break</a>
+statement.<p>
+
+<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>
diff --git a/reference/C/SYNTAX/define_preprocessor.html b/reference/C/SYNTAX/define_preprocessor.html
new file mode 100644
index 0000000..4023d2b
--- /dev/null
+++ b/reference/C/SYNTAX/define_preprocessor.html
@@ -0,0 +1,77 @@
+<title>define preprocessor</title>
+<head>
+<script language="JavaScript">
+</script>
+</head>
+<body bgcolor="#ffffcc">
+<hr>
+<center><h1>#define preprocessor</h1></center>
+<hr>
+<p>
+The <b>#define</b> preprocessor allows us to define symbolic names and constants.
+A quick example<p>
+<pre>
+ #define PI 3.14159
+</pre>
+This statement will translate every occurance of PI in the program to 3.14159.
+Here is a more complete example:<p>
+<pre>
+
+ #define PI 3.14159
+ main()
+ {
+ int r=10;
+ float cir;
+ cir = PI * (r*r);
+ }
+</pre>
+This feature is partically usefull for defining 'magic' numbers.<p>
+
+<hr>
+<h2>See Also:</h2>
+<ul>
+<li>A related C keyword is <a href=enum.html>enum</a> which can be used to
+build lists of aliases.<p>
+
+<li>Another related C keyword is <a href=const.html>const</a>.
+<p>
+
+<li>An advanced use of #define is in the creation of <a href=macros.html>
+macros</a>.
+</ul>
+
+<hr>
+<h2>Examples:</h2>
+<a href="../EXAMPLES/define.c"><img src="../../GRAPHICS/computer.gif"></a>
+example program.<p>
+
+<a href="../EXAMPLES/enum5.c"><img src="../../GRAPHICS/computer.gif"></a>
+Conflict between enum and #define.<p>
+
+<p>
+
+<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>
diff --git a/reference/C/SYNTAX/do.html b/reference/C/SYNTAX/do.html
new file mode 100644
index 0000000..da05f59
--- /dev/null
+++ b/reference/C/SYNTAX/do.html
@@ -0,0 +1,81 @@
+<title>The DO keyword.</title>
+<head>
+<script language="JavaScript">
+</script>
+</head>
+<body bgcolor="#ffffcc">
+<hr>
+<center><h1>The DO keyword.</h1></center>
+<hr>
+The <b>do</b> keyword performs a simular function to
+<a href="while.html">while</a>. Basicaly, it repeats a block of statements.
+Here is an example of the syntax:
+<pre>
+ main()
+ {
+ int i=5;
+
+ do
+ {
+ printf(" i is %d\n", i);
+ }
+ while(--i);
+ }
+
+</pre>
+
+The program result will look like this:
+<pre>
+ i is 5
+ i is 4
+ i is 3
+ i is 2
+ i is 1
+</pre>
+The main difference between <b>do</b> and <a href=while.html>while</a> is
+the time that expression is evaluated.
+<ul>
+<li><b>do</b> performs the first test AFTER the first iteration.
+<li><b>while</b> performs the first test BEFORE the first iteration.
+</ul>
+<hr>
+<h2>Examples:</h2>
+
+<a href=../EXAMPLES/do.c><img src="../../GRAPHICS/computer.gif" align=left></a>
+Basic <b>do</b>.
+<br clear=left>
+
+<hr>
+<h2>See also:</h2>
+<ul>
+<li><a href="while.html">while</a> keyword.
+<li><a href="for.html">for</a> keyword.
+<li><a href="break.html">break</a> keyword.
+<li><a href="continue.html">continue</a> keyword.
+</ul>
+
+<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>
diff --git a/reference/C/SYNTAX/enum.html b/reference/C/SYNTAX/enum.html
new file mode 100644
index 0000000..8f6b393
--- /dev/null
+++ b/reference/C/SYNTAX/enum.html
@@ -0,0 +1,97 @@
+<title>The enum statement</title>
+<head>
+<script language="JavaScript">
+</script>
+</head>
+<body bgcolor="#ffffcc">
+<hr>
+<center>
+<h1>The enum statement</h1>
+</center>
+<hr>
+<p>
+ENUM is closely related to the <a href="define_preprocessor.html">#define</a>
+preprocessor.<p>
+It allows you to define a list of aliases which represent integer numbers. For
+example if you find yourself coding something like:
+<pre>
+ #define MON 1
+ #define TUE 2
+ #define WED 3
+</pre>
+You could use <b>enum</b> as below.
+<pre>
+ enum week { Mon=1, Tue, Wed, Thu, Fri Sat, Sun} days;
+ or
+ enum escapes { BELL = '\a', BACKSPACE = '\b', HTAB = '\t',
+ RETURN = '\r', NEWLINE = '\n', VTAB = '\v' };
+
+ or
+ enum boolean { FALSE = 0, TRUE };
+
+</pre>
+
+An advantage of <b>enum</b> over <b>#define</b> is that it has
+<a href="../glossary.html#scope">scope</a>
+This means that the variable (just like any other) is only visable
+within the block it was declared within.
+<p>
+<hr>
+<h2>Notes:</h2>
+<ul>
+<li>If a variable is
+<a href="../glossary.html#definition">defined</a>
+with <b>enum</b> it is considered by
+the compiler to be an integer, and can have ANY integer value assigned
+to it, it is not restericted to the values in the enum statement.
+</ul>
+
+
+<hr>
+<h2>See Also:</h2>
+
+<a href=../../CPLUSPLUS/SYNTAX/enum.html> C++ Enhancements to enum.</a><p>
+<a href=define_preprocessor.html>#define</a> preprocessor.<p>
+
+<hr>
+<h2>Examples:</h2>
+
+<a href="../EXAMPLES/enum1.c"><img src="../../GRAPHICS/computer.gif"></a>
+enum example 1.<p>
+<a href="../EXAMPLES/enum2.c"><img src="../../GRAPHICS/computer.gif"></a>
+enum example 2.<p>
+
+<a href="../EXAMPLES/enum3.c"><img src="../../GRAPHICS/computer.gif"></a>
+enum coding error.<p>
+
+<a href="../EXAMPLES/enum4.c"><img src="../../GRAPHICS/computer.gif"></a>
+Another enum coding error.<p>
+
+<a href="../EXAMPLES/enum5.c"><img src="../../GRAPHICS/computer.gif"></a>
+enum and #define coding error.<p>
+
+<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>
diff --git a/reference/C/SYNTAX/for.html b/reference/C/SYNTAX/for.html
new file mode 100644
index 0000000..e90ac20
--- /dev/null
+++ b/reference/C/SYNTAX/for.html
@@ -0,0 +1,175 @@
+<title>The FOR keyword.</title>
+<head>
+<script language="JavaScript">
+</script>
+</head>
+<body bgcolor="#ffffcc">
+<hr>
+<center><h1>The FOR keyword.</h1></center>
+<hr>
+The <b>for</b> <a href="../glossary.html#keyword">keyword</a> is used to
+repeat a block of code many times.
+<p>
+<ul>
+<li><a href=#basic>Basic principles.</a>
+<li><a href=#repeat>Repeating several lines of code</a>
+<li><a href=#detail>More detail</a>
+</ul>
+<a name=basic>
+<hr>
+<h2>Basic principles</h2>
+Say you wanted to print all the numbers between 1 and 10, you could write:
+<pre>
+ main()
+ {
+ int count=1;
+
+ printf("%d\n", count++);
+ printf("%d\n", count++);
+ printf("%d\n", count++);
+ printf("%d\n", count++);
+ printf("%d\n", count++);
+ printf("%d\n", count++);
+ printf("%d\n", count++);
+ printf("%d\n", count++);
+ printf("%d\n", count++);
+ printf("%d\n", count++);
+ }
+</pre>
+
+As you can see this program would NOT be very practical if we wanted
+1000 numbers. The problem can be solved with the <b>for</b> statement
+as below.
+<pre>
+ main()
+ {
+ int count;
+
+ for ( count=1 ; count <= 10 ; count++) printf("%d\n", count);
+ }
+</pre>
+
+The <b>for</b> statement can be broken down into 4 sections:
+<p>
+<dl>
+<dt><samp>count=1</samp>
+<dd>is the initalisation.<p>
+
+<dt><samp>count <= 10 </samp>
+<dd>An expression. The for statement continues to loop while this
+statement remains <a href="../CONCEPT/true_false.html">true</a><p>
+
+<dt><samp>count++ </samp>
+<dd><a href="../CONCEPT/inc_dec.html">increament</a> or
+<a href="../CONCEPT/inc_dec.html">decreament</a>.<p>
+
+<dt><samp>printf("%d\n", count) </samp>
+<dd>the statement to execute.<p>
+</dl>
+
+<a name=repeat>
+<hr>
+<h2>Repeating several lines of code</h2>
+
+The previous example showed how to repeat ONE statement. This example
+shows how many lines can be repeated.
+
+<pre>
+ main()
+ {
+ int count, sqr;
+
+ for ( count=1 ; count <= 10 ; count++)
+ {
+ sqr=count * count;
+ printf( " The square of");
+ printf( " %2d", count);
+ printf( " is %3d\n", sqr);
+ }
+ }
+</pre>
+
+The <b>{</b> and <b>}</b> following the <b>for</b> statement define
+a <a href=statements.html#block>block</a> of statements.
+
+<a name=detail>
+<hr>
+<h2>More detail</h2>
+
+The <b>for</b> statement performs the following functions while looping.
+
+<pre>
+ for (expression_1 ; expression_2 ; expression_3) statement ;
+</pre>
+<ol>
+<li>Executes <samp>expression_1</samp>.<p>
+<li>Executes <samp>statement</samp>.
+<li>Executes <samp>expression_3</samp>.
+<li>Evaluates <samp>expression_2</samp>.
+<p>
+<ul>
+<li>If TRUE, Jumps to item 2.
+<li>If FALSE, Stops looping.
+</ul>
+</ol>
+
+Any of the three expressions can be missing, if the first or third is missing,
+it is ignored. If the second is missing, is is assumed to be TRUE.<p>
+
+The following example is an infinite loop:
+
+<pre>
+ main()
+ {
+ for( ; ; ) puts(" Linux rules!");
+ }
+</pre>
+
+
+
+<hr>
+<h2>Examples:</h2>
+
+<a href=../EXAMPLES/for1.c><img src="../../GRAPHICS/computer.gif" align=left></a>
+Basic <b>for</b> example.
+<br clear=left>
+
+<a href=../EXAMPLES/for2.c><img src="../../GRAPHICS/computer.gif" align=left></a>
+Advanced <b>for</b> example.
+<br clear=left>
+
+<hr>
+<h2>See also:</h2>
+<ul>
+<li><a href="while.html">while</a> keyword.
+<li><a href="do.html">do</a> keyword.
+<li><a href="continue.html">continue</a> keyword.
+<li><a href="break.html">break</a> keyword.
+<li><a href="got_ya.html#num1">for got_ya</a>.
+</ul>
+
+<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>
diff --git a/reference/C/SYNTAX/fork1.c b/reference/C/SYNTAX/fork1.c
new file mode 100644
index 0000000..d99288f
--- /dev/null
+++ b/reference/C/SYNTAX/fork1.c
@@ -0,0 +1,24 @@
+
+#include <unistd.h>
+
+main()
+{
+
+ pid_t ForkPID;
+
+ printf("Program start. \n");
+
+ ForkPID = fork(); /* Create a child and copy the parents
+ * parent data space, heap and stack.
+ */
+
+ /* ForkPID == -1 Fork failure.
+ * == 0 This is the child process.
+ * > 0 This is the parent process. The number given is the
+ * PID of the child.
+ */
+
+ printf("forkPID is %d \n", ForkPID); /* Child execution starts here. */
+ printf("Program end. \n");
+}
+
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>
diff --git a/reference/C/SYNTAX/glo_int_vars.html b/reference/C/SYNTAX/glo_int_vars.html
new file mode 100644
index 0000000..51991c4
--- /dev/null
+++ b/reference/C/SYNTAX/glo_int_vars.html
@@ -0,0 +1,214 @@
+<title>Global and Local variables declaration.</title>
+<head>
+<script language="JavaScript">
+</script>
+</head>
+<body bgcolor="#ffffcc">
+<hr>
+<center>
+<h1>Global and Local variables.</h1>
+</center>
+<hr>
+<p>
+
+<h2>Local variables</h2>
+Local variables must always be
+<a href="../glossary.html#definition">defined</a>
+at the top of a block.
+<p>
+<font color="brown">
+C++ has changed the rules regarding where you can define a
+local variable.
+<a href=../../CPLUSPLUS/CONCEPT/local_var.html>Click here</a>
+for the low down.
+</font>
+<p>
+When a local variable is
+<a href="../glossary.html#definition">defined</a>
+- it is not initalised by the system, you
+must initalise it yourself.<p>
+A local variable is
+<a href="../glossary.html#definition">defined</a>
+ inside a <b>block</b> and is only visable
+from within the block.
+<p>
+<center>
+<table border=1 width="80%" bgcolor=ivory>
+<tr>
+<td>
+<pre>
+
+ main()
+ {
+ int i=4;
+ i++;
+ }
+
+</pre>
+</td>
+</tr>
+</table>
+</center>
+<p>
+When execution of the block starts the variable is
+available, and when the block ends the variable 'dies'.<p>
+A local variable is visible within nested blocks unless a variable with
+the same name is
+<a href="../glossary.html#definition">defined</a>
+ within the nested block.
+<p>
+<center>
+<table border=1 bgcolor=ivory width="80%">
+<tr>
+<td>
+<pre>
+
+ 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. */
+ }
+
+</pre>
+</td>
+</tr>
+</table>
+</center>
+<p>
+<a name="global">
+<hr width="50%" align=center>
+<h2>Global variables</h2>
+
+<font color="brown">
+C++ has enhanced the use of
+<a href=../../CPLUSPLUS/CONCEPT/scope.html> global variables.</a>
+</font>
+<p>
+Global variables ARE initalised by the system when you
+<a href="../glossary.html#definition">define</a>
+ them!
+<p>
+<center>
+<table border=2 width="50%" bgcolor=ivory>
+<tr align=center><td> Data Type </td><td> Initialser </td> </tr>
+<tr align=center><td> int </td><td> 0 </td> </tr>
+<tr align=center><td> char </td><td> '\0' </td> </tr>
+<tr align=center><td> float </td><td> 0 </td> </tr>
+<tr align=center><td> pointer </td><td> NULL </td> </tr>
+
+</table>
+</center>
+<p>
+In the next example <b>i</b> is a global variable, it can be seen and modified by
+<b> main </b>and any other functions that may reference it.
+<p>
+<center>
+<table border=1 width="80%" bgcolor=ivory>
+<tr>
+<td>
+<pre>
+
+ int i=4;
+
+ main()
+ {
+ i++;
+ }
+
+</pre>
+</td>
+</tr>
+</table>
+</center>
+<p>
+
+Now, this example has <b>global</b> and <b>Internal</b> variables.
+<p>
+<center>
+<table border=1 width="80%" bgcolor=ivory>
+<tr>
+<td>
+<pre>
+
+ int i=4; /* Global definition */
+
+ main()
+ {
+ i++; /* global variable */
+ func
+ }
+
+ func()
+ {
+ int i=10; /* Internal declaration */
+ i++; /* Internal variable */
+ }
+
+</pre>
+</td>
+</tr>
+</table>
+</center>
+<p>
+
+<b>i</b> in <b>main</b> is global and will be incremented to 5. <b>i</b> in
+<b>func</b> is internal and will be incremented to 11. When control returns
+to <b>main</b> the internal variable will die and and any reference to
+<b>i</b> will
+be to the global.<p>
+
+
+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.<p>
+<hr>
+<h2>Example:</h2>
+<img src="../../GRAPHICS/computer.gif">
+<a href="../EXAMPLES/global.c">An Example program</a>.
+<hr>
+<h2>See Also:</h2>
+See <a href="../CONCEPT/storage_class.html">Storage classes</a> to see the more powerfull
+features of variable declarations.
+
+<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>
+
diff --git a/reference/C/SYNTAX/got_ya.html b/reference/C/SYNTAX/got_ya.html
new file mode 100644
index 0000000..4781430
--- /dev/null
+++ b/reference/C/SYNTAX/got_ya.html
@@ -0,0 +1,80 @@
+<title>Got Ya</title>
+<head>
+<script language="JavaScript">
+</script>
+</head>
+<body bgcolor="#ffffcc">
+<hr>
+<center>
+<h1>Got Ya</h1>
+</center>
+<hr>
+<ul>
+<li><a href="#num1">== and =</a>
+<li><a href="#num1">if</a>
+</ul>
+
+<a name=num1>
+<hr>
+An error which almost every C programmer has made is shown below:
+<pre>
+ main()
+ {
+ int left=10;
+
+ if ( left = 5 )
+ {
+ puts(" Values are equal...");
+ }
+ }
+</pre>
+The program assigns 5 to the variable <b>left</b> and returns 5.
+This is interpreted as <a href="../CONCEPT/true_false.html">TRUE</a> and causes the
+<a href="../FUNCTIONS/puts.html">puts</a> statement to be executed everytime.
+<p>
+Here is the corrected program.
+<pre>
+ main()
+ {
+ int left=10;
+
+ if ( left == 5 ) /* Double equals required. */
+ {
+ puts(" Values are equal...");
+ }
+ }
+</pre>
+
+<hr>
+
+<hr>
+<h2>See Also:</h2>
+
+<img src="../../GRAPHICS/whiteball.gif">
+<a href="idioms.html">Coding idioms</a>.<p>
+
+<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>
diff --git a/reference/C/SYNTAX/goto.html b/reference/C/SYNTAX/goto.html
new file mode 100644
index 0000000..156534a
--- /dev/null
+++ b/reference/C/SYNTAX/goto.html
@@ -0,0 +1,59 @@
+<title>The GOTO keyword.</title>
+<head>
+<script language="JavaScript">
+</script>
+</head>
+<body bgcolor="#ffffcc">
+<hr>
+<center>
+<h1>The GOTO keyword.</h1>
+</center>
+<hr>
+Well, I have resisted adding <b>goto</b> for a whole year. But tonight
+I have had a couple of beers and
+I am ready to go for it. It must be said
+that most programmers will claim that
+<b>goto</b> is never required and I dont have reason to disagree, but
+you may like to differ.
+
+<h2>goto syntax</h2>
+
+<pre>
+ goto lab1;
+
+ lab1:
+</pre>
+goto allows the program to 'jump' to a named label, in this case <b>lab1</b>,
+the target label MUST be terminated with a : (colon).
+
+
+<hr>
+<h2>An Example.</h2>
+<a href="../EXAMPLES/goto.c"><img src="../../GRAPHICS/computer.gif"></a>
+goto 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>
diff --git a/reference/C/SYNTAX/idioms.html b/reference/C/SYNTAX/idioms.html
new file mode 100644
index 0000000..62247d3
--- /dev/null
+++ b/reference/C/SYNTAX/idioms.html
@@ -0,0 +1,136 @@
+<title>Idioms</title>
+<head>
+<script language="JavaScript">
+</script>
+</head>
+<body bgcolor="#ffffcc">
+<hr>
+<center>
+<h1>Idioms</h1>
+</center>
+<hr>
+<p>
+
+Here are some C idioms that may be usefull.
+
+<p><hr align=center width="50%"><p>
+Place <code>\0</code> at the location pointed to by <code>ptr</code>
+then increment <code>ptr</code>
+<p>
+<center>
+<table border=2 bgcolor=ivory>
+<tr><td>
+<pre>
+
+ *ptr++ = '\0';
+</pre>
+</td></tr>
+</table>
+</center>
+
+<p><hr align=center width="50%"><p>
+Increment <code>ptr</code> then
+place <code>\0</code> at the location pointed to by <code>ptr</code>
+<p>
+<center>
+<table border=2 bgcolor=ivory>
+<tr><td>
+<pre>
+
+ *++ptr = '\0';
+</pre>
+</td></tr>
+</table>
+</center>
+
+<p><hr align=center width="50%"><p>
+This program will print its self! I guess its not of any real
+use, but I think its clever.
+<p>
+<center>
+<table border=2 bgcolor=ivory>
+<tr><td>
+<pre>
+
+ main(a) {a="main(a) {a=%c%s%c;printf(a,34,a,34);}";printf(a,34,a,34);}
+</pre>
+</td></tr>
+</table>
+</center>
+
+<p><hr align=center width="50%"><p>
+This is something I saw out on the web. It swaps the value of two
+variables without
+using a third variable as a temporary store.
+<p>
+<center>
+<table border=2 bgcolor=ivory>
+<tr><td>
+<pre>
+
+ one ^= two;
+ two ^= one;
+ one ^= two;
+</pre>
+</td></tr>
+</table>
+</center>
+
+<a name=printf>
+<p><hr align=center width="50%"><p>
+
+Have you ever had a SEGV from <a href="../FUNCTIONS/printf.html">printf</a>
+because you passed a NULL pointer to a %s flag???. This idiom will put
+a stop to all that nonsence.
+<p>
+<center>
+<table border=2 bgcolor=ivory>
+<tr><td>
+<pre>
+
+ printf("%s\n", Str ? Str : "Null");
+</pre>
+</td></tr>
+</table>
+</center>
+
+
+
+<p><hr align=center width="50%"><p>
+<p>
+<img src="../../GRAPHICS/computer.gif" alt="o">
+<a href=../EXAMPLES/swap.c>Program swapping the contents of two variables</a>.
+<p>
+
+<hr>
+<h2>See Also:</h2>
+
+<img src="../../GRAPHICS/whiteball.gif" alt="o">
+<a href="got_ya.html">Common Coding Errors</a>.<p>
+
+
+<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>
diff --git a/reference/C/SYNTAX/if.html b/reference/C/SYNTAX/if.html
new file mode 100644
index 0000000..8df9bb6
--- /dev/null
+++ b/reference/C/SYNTAX/if.html
@@ -0,0 +1,133 @@
+<title>if-else keywords.</title>
+
+<head>
+<script language="JavaScript">
+</script>
+</head>
+
+<body bgcolor="#ffffcc">
+<hr>
+<center>
+<h1>The 'if' and 'else' keywords</h1>
+</center>
+<hr>
+<p>
+
+The if-else statement is a two-way decision statement. It is written as
+
+<pre>
+ if ( expression ) statement1;
+ [else statement2;]
+</pre>
+
+The else portion is optional. If the expression evaluates to
+<a href="../CONCEPT/true_false.html">true</a>
+(anything other than 0) then statement1 is executed. If there is an <b>else</b>
+statement and the expression evaluates to
+<a href="../CONCEPT/true_false.html">false</a>
+statement2 is executed.
+
+For example
+
+<pre>
+(1)
+ int NumberOfUsers;
+ .
+ .
+ if( NumberOfUsers == 25 )
+ { /* No else part */
+ printf( "There are already enough users. Try later.\n" );
+ return ERROR;
+ }
+ .
+ .
+
+
+(2) if( a >= b ) larger = a; /* else part is present */
+ else larger = b;
+</pre>
+
+Consider this code fragment:
+<pre>
+ if( p == 1 )
+ if( q == 2 ) r = p * 2 + q;
+ else r = q * 2 + p;
+</pre>
+Because the <b>else</b> part is optional, there is an ambiguity when an <b>else</b> is
+omitted from a nested if sequence. In 'C', this is resolved by associating
+the <b>else</b> with the closest previous if that does not have an <b>else</b>.
+Therefore, in the above example, the <b>else</b> part belongs to the if(q==2)
+statement.
+
+The code can be made more readable by explicitly putting parentheses in
+the expression, like this
+
+<pre>
+ if( p == 1 )
+ {
+ if( q == 2 ) r = p * 2 + q;
+ }
+ else r = q * 2 + p;
+
+ OR
+
+ if( p == 1 )
+ {
+ if( q == 2 ) r = p * 2 + q;
+ else r = q * 2 + p;
+ }
+</pre>
+
+Because the statement in the <b>else</b> part can also be an if statement, a
+construct such as shown below is possible in 'C' to create a multiple
+choice construct.
+
+<pre>
+ if( expression1 )
+ statement1;
+ else if( expression2 )
+ statement2;
+ else if( expression3 )
+ statement3;
+ .
+ .
+ else
+ statementN;
+</pre>
+
+<hr>
+<h2>Example:</h2>
+<img src="../../GRAPHICS/computer.gif" align=center>
+<a href="../EXAMPLES/if.c"> Basic <b>if</b> example.</a>
+<br clear=left>
+<hr>
+<h2>See also:</h2>
+<ul>
+<li><a href="switch.html">switch</a> keyword.
+</ul>
+<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>
diff --git a/reference/C/SYNTAX/include_preprocessor.html b/reference/C/SYNTAX/include_preprocessor.html
new file mode 100644
index 0000000..cd88707
--- /dev/null
+++ b/reference/C/SYNTAX/include_preprocessor.html
@@ -0,0 +1,61 @@
+<title>include preprocessor</title>
+<head>
+<script language="JavaScript">
+</script>
+</head>
+<body bgcolor="#ffffcc">
+<hr>
+<center>
+<h1>include preprocessor.</h1>
+</center>
+<hr>
+The include preprocessor will add source code to your existing source. This
+is used to include <i>header</i> files that contain function declarations.
+For example:<p>
+<pre>
+ #include &lt;stdio.h&gt;
+ main()
+ printf("hi peeps");
+ }
+</pre>
+The <i>printf</i> function declaration is held in stdio.h<p>
+There are two ways of defining the include files location.
+<ul>
+<li>&lt;&gt;says to the preprocessor that the file is in the system libraries.
+<pre>
+ #include &lt;stdio.h&gt;
+</pre>
+
+<li>&quot;&quot;means that this is a user defined file. Absolute or relative
+paths may be defined.
+<pre>
+ #include &quot;myheaders.h&quot;
+ #include &quot;/usr/home/leslim/myheaders.h&quot;
+</pre>
+</ul>
+
+<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>
diff --git a/reference/C/SYNTAX/keywords.html b/reference/C/SYNTAX/keywords.html
new file mode 100644
index 0000000..586ddcb
--- /dev/null
+++ b/reference/C/SYNTAX/keywords.html
@@ -0,0 +1,115 @@
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <meta name="GENERATOR" content="Mozilla/4.5 [en] (X11; I; Linux 2.0.36 i586) [Netscape]">
+ <title>C keywords.</title>
+</head>
+<body bgcolor="#FFFFCC">
+
+<hr>
+<center>
+<h1>
+C keywords.</h1></center>
+
+<hr>The following list shows all the ANSII defined C keywords. I have included
+<a href="sizeof.html">sizeof</a> because it looks like a keyword and it
+keeps the table below tidy....
+<center><table BORDER=2 CELLPADDING=5 BGCOLOR="#FFFFF0" >
+<tr ALIGN=CENTER>
+<td><a href="../CONCEPT/storage_class.html#auto">auto</a></td>
+
+<td><a href="break.html">break</a></td>
+
+<td><a href="switch.html">case</a></td>
+
+<td><a href="../CONCEPT/data_types.html#char">char</a></td>
+
+<td><a href="../CONCEPT/data_types.html#qualifier">const</a></td>
+
+<td><a href="continue.html">continue</a></td>
+
+<td><a href="switch.html">default</a></td>
+
+<td><a href="do.html">do</a></td>
+</tr>
+
+<tr ALIGN=CENTER>
+<td><a href="../CONCEPT/data_types.html#double">double</a></td>
+
+<td><a href="if.html">else</a></td>
+
+<td><a href="enum.html">enum</a></td>
+
+<td><a href="../CONCEPT/storage_class.html#extern">extern</a></td>
+
+<td><a href="../CONCEPT/data_types.html#float">float</a></td>
+
+<td><a href="for.html">for</a></td>
+
+<td><a NAME="goto"></a><a href="goto.html">goto</a></td>
+
+<td><a href="if.html">if</a></td>
+</tr>
+
+<tr ALIGN=CENTER>
+<td><a href="../CONCEPT/data_types.html#int">int</a></td>
+
+<td><a href="../CONCEPT/data_types.html#modifier">long</a></td>
+
+<td><a href="../CONCEPT/storage_class.html#register">register</a></td>
+
+<td><a href="return.html">return</a></td>
+
+<td><a href="../CONCEPT/data_types.html#modifier">short</a></td>
+
+<td><a href="../CONCEPT/data_types.html#modifier">signed</a></td>
+
+<td><a href="sizeof.html">sizeof</a></td>
+
+<td><a href="../CONCEPT/storage_class.html#static">static</a></td>
+</tr>
+
+<tr ALIGN=CENTER>
+<td><a href="struct.html">struct</a></td>
+
+<td><a href="switch.html">switch</a></td>
+
+<td><a href="typedef.html">typedef</a></td>
+
+<td><a href="union.html">union</a></td>
+
+<td><a href="../CONCEPT/data_types.html#modifier">unsigned</a></td>
+
+<td><a href="void.html">void</a></td>
+
+<td><a href="volatile.html">volatile</a></td>
+
+<td><a href="while.html">while</a></td>
+</tr>
+</table></center>
+
+<p>
+<hr><font color="#A52A2A">C++ extends the language to include <a href="../../CPLUSPLUS/SYNTAX/keywords.html">these
+keywords</a></font>
+<br>
+<hr>
+<center><table BORDER=2 WIDTH="80%" BGCOLOR="#FFFFF0" >
+<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>
+
+</body>
+</html>
diff --git a/reference/C/SYNTAX/logical.html b/reference/C/SYNTAX/logical.html
new file mode 100644
index 0000000..54cb246
--- /dev/null
+++ b/reference/C/SYNTAX/logical.html
@@ -0,0 +1,102 @@
+<title>Logical AND OR and NOT</title>
+<head>
+<script language="JavaScript">
+</script>
+</head>
+<body bgcolor="#ffffcc">
+<hr>
+<center>
+<h1>Logical AND OR and NOT</h1>
+</center>
+<hr>
+
+<ul>
+<li><a href=#AND>Logical AND is &&</a>
+<li><a href=#OR>Logical OR is ||</a>
+<li><a href=#NOT>Logical NOT is !</a>
+</ul>
+<hr>
+<a name=AND>
+<h2>Logical AND</h2>
+In simple terms, && is true (1) if both sides of the expression returns NOT 0.
+<p>
+For Example:
+<pre>
+ /* These all return TRUE (1) */
+
+ if (4 && 5) return();
+
+ i=3;
+ j=2;
+ return( i && j);
+</pre>
+The expression is evaluated 'Left to Right' If any part of the expression
+returns ZERO - The evaluation ends.
+<p>
+THIS CAN CAUSE SERIOUS PROBLEMS.
+<p>
+For example:
+<pre>
+ k=0;
+ i=3;
+ j=2;
+ if ( i-i && j++) k=1
+</pre>
+The left side <i>(i-i)</i> resolves to 0, so <i>j</i> is not incremented
+and <i>k</i> is not changed.
+<hr>
+<a name=OR>
+<h2>Logical OR</h2>
+OR also evaluates 'Left to Right' and will stop when an expression
+returns true. <p>
+SO WATCH YOUR BACK....
+<p>
+<pre>
+ k=0;
+ i=3;
+ j=2;
+ if ( i+i && j++) k=1
+</pre>
+What are <i>j</i> and <i>k</i> going to be when this code is executed?????
+
+<hr>
+<a name=NOT>
+<h2>Logical NOT</h2>
+
+NOT reverses the logical state of its
+<a href=../glossary.html#operand>operand</a>. If the operand is 0, 1 is
+returned, else 0 is returned.
+
+<pre>
+ !4 /* Returns 0 */
+ !-4 /* Returns 0 */
+ !1 /* Returns 0 */
+ !0 /* Returns 1 */
+</pre>
+
+
+<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>
diff --git a/reference/C/SYNTAX/macros.html b/reference/C/SYNTAX/macros.html
new file mode 100644
index 0000000..b7726cf
--- /dev/null
+++ b/reference/C/SYNTAX/macros.html
@@ -0,0 +1,96 @@
+<title>Macros</title>
+<head>
+<script language="JavaScript">
+</script>
+</head>
+<body bgcolor="#ffffcc">
+<hr>
+<center>
+<h1>Macros</h1>
+</center>
+<hr>
+<p>
+Macros are built on the <a href="define_preprocessor.html">#define</a>
+preprocessor.<p>
+Normally a #define would look like:
+<pre>
+ #define PI 3.142
+</pre>
+But, a macro would look like this.
+<pre>
+ #define SQUARE(x) x*x
+</pre>
+The main difference is that the first example is a constant and the second
+is an expression.
+If the <b>macro</b> above was used in some code it may look like this:
+<pre>
+ #define SQUARE(x) x*x
+
+ main()
+ {
+ int value=3;
+ printf("%d \n", SQUARE(value));
+ }
+</pre>
+After preprocessing the code would become:
+<pre>
+ main()
+ {
+ int value=3;
+ printf("%d \n", value*value);
+ }
+</pre>
+<hr>
+<h2>Examples:</h2>
+
+<a href="../EXAMPLES/macro.c"><img src="../../GRAPHICS/computer.gif"></a>
+macro example.<p>
+<hr>
+<h2>Notes:</h2>
+<ul>
+<li>The value passed to SQUARE could have been an
+<a href="../CONCEPT/data_types.html#int">int</a>
+<a href="../CONCEPT/data_types.html#float">float</a>
+or
+<a href="../CONCEPT/data_types.html#double">double</a>
+<li>Long macros can span multiple lines by using a
+<a href="../FUNCTIONS/escape.html">\</a> followed by a newline
+(return).
+<li>If you are using gcc to compile your code, you can use the -E option to
+see the preprocessor output
+</ul>
+<hr>
+<h2>See Also:</h2>
+<ul>
+<li><A href="define_preprocessor.html">#define</a> preprocessor.
+<font color=brown>
+<li><A href="../../CPLUSPLUS/SYNTAX/inline.html">inline</a> A C++ keyword that provides a better aproch to macros.
+</font>
+</ul>
+
+
+<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>
diff --git a/reference/C/SYNTAX/namespace.html b/reference/C/SYNTAX/namespace.html
new file mode 100644
index 0000000..3fdce4f
--- /dev/null
+++ b/reference/C/SYNTAX/namespace.html
@@ -0,0 +1,46 @@
+<title>XXX</title>
+
+<head>
+<script language="JavaScript">
+</script>
+</head>
+
+<body bgcolor="#ffffcc">
+<hr>
+<center>
+<h1>XXXX</h1>
+</center>
+<hr>
+<b>XXXX</b>
+<p>
+<hr>
+</pre>
+<hr>
+<h2>Examples:</h2>
+
+<img src="../../GRAPHICS/computer.gif"><a href="../EXAMPLES/malloc.c"> example</a>
+program.
+
+<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>
diff --git a/reference/C/SYNTAX/null.html b/reference/C/SYNTAX/null.html
new file mode 100644
index 0000000..143b52a
--- /dev/null
+++ b/reference/C/SYNTAX/null.html
@@ -0,0 +1,81 @@
+<title>Null</title>
+<head>
+<script language="JavaScript">
+</script>
+</head>
+<body bgcolor="#ffffcc">
+<hr>
+<center><h1>NULL</h1></center>
+<hr>
+<p>
+NULL is used in several ways.
+<ul>
+<li>As a pointer to address zero. NULL is defined in several ANSI headers
+as the
+<a href="define_preprocessor.html">symbolic constant</a>
+<a href="../CONCEPT/pointers.html#void">(void *)0</a>. Zero is often returned from
+functions that normaly return a pointer to signal an error. It is therefore
+conveniant to compare a function return code with NULL to catch errors.
+<pre>
+ if ((fp=<a href="../FUNCTIONS/fopen.html">fopen</a>("/etc/hosts","r") == NULL)
+ {
+ exit(0);
+ }
+</pre>
+<p>
+<li>To mark the end of a character string. A null character is used to
+terminate the string. For example if you coded:
+<pre>
+ char * text="abc";
+</pre>
+You will actually reserve <b>FOUR</b> bytes containing in ASCII hex.
+<pre>
+ 61 62 63 00
+ a b c \0
+</pre>
+The null at the end can be coded by using the
+<a href="../FUNCTIONS/escape.html">escape sequence</a> '\0'.
+</ul>
+<p>
+\0 is actually an octal <a href="../FUNCTIONS/escape.html">escape sequence</a>,
+strictly speeking it should
+be written as \000
+<p>
+<hr>
+<h2>ANSI headers</h2>
+The following headers define NULL.
+<ul>
+<li><a href="../FUNCTIONS/funcref.htm#headers">locale.h</a>
+<li><a href="../FUNCTIONS/funcref.htm#headers">stddef.h</a>
+<li><a href="../FUNCTIONS/funcref.htm#headers">stdio.h</a>
+<li><a href="../FUNCTIONS/funcref.htm#headers">stdlib.h</a>
+<li><a href="../FUNCTIONS/funcref.htm#headers">string.h</a>
+<li><a href="../FUNCTIONS/funcref.htm#headers">string.h</a>
+<li><a href="../FUNCTIONS/funcref.htm#headers">time.h</a>
+
+
+<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>
diff --git a/reference/C/SYNTAX/preprocessors.html b/reference/C/SYNTAX/preprocessors.html
new file mode 100644
index 0000000..5885253
--- /dev/null
+++ b/reference/C/SYNTAX/preprocessors.html
@@ -0,0 +1,83 @@
+<title>C compiler preprocessors</title>
+<head>
+<script language="JavaScript">
+</script>
+</head>
+<body bgcolor="#ffffcc">
+<hr>
+<center>
+<h1>C compiler preprocessors</h1>
+</center>
+<hr>
+
+Preprocessor commands are executed before the compiler compiles the
+source code. These commands will change the original code usually to
+suit the operating environment and/or to add code that will be required by
+calls to library functions. Preprocessors are recognised by the leading
+# in their names.
+<p>
+<table border=2 bgcolor=ivory>
+<Caption>Preprocessors</caption>
+<tr>
+<td><a href="include_preprocessor.html">#include</a> <td>Insert a source file.
+<tr>
+<td><a href="define_preprocessor.html">#define</a> <td>Define a preprocessor
+constant.
+<tr>
+<td><a href="../EXAMPLES/if_else_endif.c">#if</a> <td>Branch based on an expression.
+<tr>
+<td>#ifdef <td>Branch if preprocessor constant has been defined?
+<tr>
+<td><a href="../EXAMPLES/ifndef.c">#ifndef</a> <td> Branch is a preprocessor
+constant has NOT been defined.
+<tr>
+<td>#line <td> Specify the number of the next source line.
+<tr>
+<td>#undef <td> Remove a preprocessor constant.
+<tr>
+<td>#pragma<td> Perform an implementation dependent action???
+<tr>
+<td><a href="../EXAMPLES/if_else_endif.c">#else</a> <td> Executed if #if
+#ifdef or #ifndef fails.
+<tr>
+<td>#error <td> Write an error message.
+<tr>
+<td>#elif <td> Executed when an #if fails.
+<tr>
+<td><a href="../EXAMPLES/if_else_endif.c">#endif</a> <td>Close #if #ifdef or
+#ifndef
+</table>
+<hr>
+<H2>Notes:</H2>
+<ul>
+<li>Preprocessors should start in column 1.
+<li>The -E option tells gcc to stop after the preprocessor stage and send the
+O/P to STDOUT (usually the screen).
+</ul>
+
+
+<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>
diff --git a/reference/C/SYNTAX/return.html b/reference/C/SYNTAX/return.html
new file mode 100644
index 0000000..68a9c2c
--- /dev/null
+++ b/reference/C/SYNTAX/return.html
@@ -0,0 +1,134 @@
+<title>The return statement</title>
+<head>
+<script language="JavaScript">
+</script>
+</head>
+<body bgcolor="#ffffcc">
+<hr>
+<center>
+<h1>The return statement </h1>
+</center>
+<hr>
+<p>
+<b>return</b> will return a value from a function to its caller.
+The value returned is
+the result of an <a href="../CONCEPT/expressions.html">expression</a>.
+<p>
+<hr>
+As an Example this will print <b>7</b>
+
+<p>
+<table border=2 width="100%" bgcolor=ivory>
+<tr>
+<td>
+<pre>
+
+ int func(void);
+
+ main()
+ {
+ printf("%d \n", func());
+ }
+
+ int func(void)
+ {
+ return 7;
+ }
+</pre>
+</td>
+</tr>
+</table>
+<p>
+
+What ever follows the <b>return</b> statement will be evaluated as
+an expression. So, to be consistant you could place brackets around
+the return value.
+
+<p>
+<table border=2 width="50%" bgcolor=ivory>
+<tr>
+<td>
+<pre>
+
+ return(7);
+</pre>
+</td>
+</tr>
+</table>
+<p>
+Or you could evaluate a formula on the statement:
+
+<p>
+<table border=2 width="50%" bgcolor=ivory>
+<tr>
+<td>
+<pre>
+
+ return (Count-1);
+</pre>
+</td>
+</tr>
+</table>
+<p>
+Finally, if the function returns a <a href=void.html>void</a>
+the <b>return</b> statement is not required, but maybe needed to
+leave a function before the end of the function block. Here
+is an example.
+
+<p>
+<table border=2 width="100%" bgcolor=ivory>
+<tr>
+<td>
+<pre>
+
+ void CheckDate(int)
+
+ main()
+ {
+ CheckDate(40)
+ }
+
+ void CheckDate(int Month)
+ {
+ if (Month > 31)
+ {
+ return;
+ }
+
+ puts("Month is valid");
+ }
+</pre>
+</td>
+</tr>
+</table>
+<p>
+<hr>
+<h2>See also:</h2>
+The <a href=../FUNCTIONS/exit.html>exit </a>function.
+
+
+<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>
diff --git a/reference/C/SYNTAX/sizeof.html b/reference/C/SYNTAX/sizeof.html
new file mode 100644
index 0000000..34dc287
--- /dev/null
+++ b/reference/C/SYNTAX/sizeof.html
@@ -0,0 +1,130 @@
+<title>The sizeof operator</title>
+<head>
+<script language="JavaScript">
+</script>
+</head>
+<body bgcolor="#ffffcc">
+<hr>
+<center>
+<h1>The sizeof operator</h1>
+</center>
+<hr>
+<p>
+<b>sizeof</b> will return the number of bytes reserved for a variable or
+<a href="../CONCEPT/data_types.html">data type</a>.
+<p>
+The following code shows <b>sizeof</b> returning the length of a data type.
+<p>
+<table border=2 width="100%" bgcolor=ivory>
+<tr>
+<td>
+<pre>
+
+ /* How big is an int? expect an answer of 4. */
+
+ main()
+ {
+ printf("%d \n", sizeof(int));
+ }
+</pre>
+</td>
+</tr>
+</table>
+<p>
+
+<b>sizeof</b> will also return the number of bytes reserved for a
+<a href="struct.html">structure</a>.
+<p>
+<table border=2 width="100%" bgcolor=ivory>
+<tr>
+<td>
+<pre>
+
+ /* Will print 8 on most machines. */
+
+ main()
+ {
+ struct
+ {
+ int a;
+ int b;
+ } TwoInts;
+
+ printf("%d \n", sizeof(TwoInts));
+ }
+
+</pre>
+</td>
+</tr>
+</table>
+<p>
+Finally, <b>sizeof</b> will return the length of a variable.
+
+<p>
+<table border=2 width="100%" bgcolor=ivory>
+<tr>
+<td>
+<pre>
+
+ main()
+ {
+ char String[20];
+
+ printf ("%d \n", sizeof String);
+ printf ("%d \n", sizeof (String));
+ }
+
+</pre>
+</td>
+</tr>
+</table>
+<p>
+In the example above I have printed the size of 'String' twice. This is to
+show that when dealing with variables, the brackets are optional.
+
+I recommend that you always place the brackets around the sizeof argument.
+<p>
+<hr>
+<h2>Examples:</h2>
+<a href="../EXAMPLES/sizeof.c">Example 1</a> Data types.
+<p>
+<a href="../EXAMPLES/sizeof1.c">Example 2</a> Data objects.
+
+<p>
+<hr>
+<h2>See also:</h2>
+<img src="../../GRAPHICS/whiteball.gif">
+The <a href="../FUNCTIONS/strlen.html">strlen </a>function.
+<p>
+<img src="../../GRAPHICS/whiteball.gif">
+Other <a href="../CONCEPT/expressions.html">operators</a>
+<p>
+<img src="../../GRAPHICS/whiteball.gif">
+<a href="../FUNCTIONS/malloc.html">malloc</a> function.
+
+
+<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>
diff --git a/reference/C/SYNTAX/statements.html b/reference/C/SYNTAX/statements.html
new file mode 100644
index 0000000..0a7439e
--- /dev/null
+++ b/reference/C/SYNTAX/statements.html
@@ -0,0 +1,90 @@
+<title>C statements and blocks</title>
+<head>
+<script language="JavaScript">
+</script>
+</head>
+<body bgcolor="#ffffcc">
+<hr>
+<center>
+<h1>C Statements and blocks.</h1>
+</center>
+<hr>
+<h2>Statements</h2>
+C has three types of statement.
+<ul>
+<li>assignment
+<pre>
+ =
+</pre>
+<li>selection (branching)
+<pre>
+ <a href="../EXAMPLES/if.c">if</a> (expression)
+ else
+ switch
+</pre>
+<li>iteration (looping)
+<pre>
+ <a href="while.html">while</a> (expression)
+ <a href="for.html">for</a> (expression;expression;expression)
+ <a href="do.html">do</a> {block}
+</pre>
+</ul>
+
+<a name=block>
+<h2>Blocks</h2>
+</ul>
+These statements are grouped into <i>blocks</i>, a block is identified by
+curly brackets...There are two types of block.
+<ul>
+<li>statement blocks
+<pre>
+ if ( i == j)
+ {
+ printf("martin \n");
+ }
+</pre>
+The <i>statement block</i> containing the <b>printf</b> is only executed
+if the <b>i == j</b>
+<i>expression</i> evaluates to <a href="../CONCEPT/true_false.html">TRUE</a>.<p>
+
+<li>function blocks
+
+<pre>
+ int add( int a, int b) /* Function definition */
+ {
+ int c;
+ c = a + b;
+ return c;
+ }
+</pre>
+The statements in this block will only be executed if the <i> add </i> function
+is called. <a href="../EXAMPLES/function.c">Complete function example</a>
+
+</ul>
+
+
+<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>
diff --git a/reference/C/SYNTAX/static.htm b/reference/C/SYNTAX/static.htm
new file mode 100644
index 0000000..273eb3a
--- /dev/null
+++ b/reference/C/SYNTAX/static.htm
@@ -0,0 +1,175 @@
+<title>static functions</title>
+
+<head>
+<script language="JavaScript">
+</script>
+</head>
+
+<body bgcolor="#ffffcc">
+<hr>
+<center>
+<h1>static functions</h1>
+</center>
+<hr>
+<p>
+
+<b>static functions</b> are functions that are only visable to other
+functions in the same file. Consider the following code.
+<p>
+<table border=2 bgcolor=ivory align=left>
+<th>
+main.c
+</th>
+<tr>
+<td>
+<pre>
+
+ #include <stdio.h>
+
+ main()
+ {
+ Func1();
+
+ Func2();
+ }
+
+</pre>
+</td>
+</tr>
+</table>
+
+<table border=2 bgcolor=ivory>
+<th>
+funcs.c
+</th>
+<tr>
+<td>
+<pre>
+
+ /*************************************
+ *
+ * Function declarations (prototypes).
+ *
+ *************************************/
+
+ /* Func1 is only visable to functions in this file. */
+
+ <font color=red><i>static</i></font> void Func1(void);
+
+ /* Func2 is visable to all functions. */
+
+ void Func2(void);
+
+ /*************************************
+ *
+ * Function definitions
+ *
+ *************************************/
+
+ void Func1(void)
+ {
+ puts("Func1 called");
+ }
+
+ /*************************************/
+
+ void Func2(void)
+ {
+ puts("Func2 called");
+ }
+
+</pre>
+</td>
+</tr>
+</table>
+<p>
+If you attempted to compile this code with the following
+command,
+<p>
+
+<center>
+<table border=2 bgcolor=ivory>
+<tr>
+<td>
+<pre>
+
+ gcc main.c funcs.c
+</pre>
+</td>
+</tr>
+</table>
+</center>
+<p>
+it will fail with an error simular to.....
+<p>
+
+<center>
+<table border=2 bgcolor=ivory>
+<tr>
+<td>
+<pre>
+
+ undefined reference to `Func1'
+</pre>
+</td>
+</tr>
+</table>
+</center>
+<p>
+Because 'Func1' is declared as <font color=red><i>static</i></font>
+and cannot be 'seen' by 'main.c'.
+<p>
+<hr>
+<h2>Notes:</h2>
+For some reason, <font color=red><i>static</i></font> has different
+meanings in in different contexts.
+<ol>
+<li> When specified on a function declaration, it makes the
+function local to the file.
+<p>
+<li> When specified with a variable inside a function, it
+allows the vairable to retain its value between calls to
+the function. See
+<a href=../CONCEPT/storage_class.html#static>static variables</a>.
+</ol>
+It seems a little strange that the same keyword has such
+different meanings....
+
+<p>
+<hr>
+<h2>See Also:</h2>
+
+<img src="../../GRAPHICS/whiteball.gif">
+<a href="../CONCEPT/storage_class.html#static">static variables</a><p>
+
+<font color=brown>
+<img src="../../GRAPHICS/whiteball.gif">
+<a href="../../CPLUSPLUS/SYNTAX/static.htm">C++ extensions for </a>static<p>
+</font>
+
+
+<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>
diff --git a/reference/C/SYNTAX/storage_class.html b/reference/C/SYNTAX/storage_class.html
new file mode 100644
index 0000000..c12cbc8
--- /dev/null
+++ b/reference/C/SYNTAX/storage_class.html
@@ -0,0 +1,187 @@
+<title>C Storage Classes</title>
+<head>
+<script language="JavaScript">
+</script>
+</head>
+
+<body bgcolor="#ffffcc">
+<center>
+<hr>
+<h1>C Storage Classes.</h1>
+<hr>
+</center>
+<p>
+C has a concept of '<i>Storage classes</i>' which are used to define the
+scope (visability) and life time of variables and/or functions.
+<p>
+So what Storage Classes are available?
+<p>
+<table border=2 bgcolor=ivory>
+<tr>
+<td><a href="#auto">auto</a>
+<td><a href="#register">register</a>
+<td><a href="#static">static</a>
+<td><a href="#extern">extern</a>
+<td><A HREF="../SYNTAX/typedef.html">typedef</A>
+</tr>
+</table>
+<p>
+<hr>
+<h2><a name="auto">auto - storage class</h2>
+<b>auto</b> is the default storage class for local variables.
+<pre>
+ {
+ int Count;
+ auto int Month;
+ }
+</pre>
+
+The example above defines two variables with the same storage class.
+auto can only be used within functions, i.e. local variables. <p>
+<hr>
+<h2><a name="register">register - Storage Class</h2>
+<b>register</b> is used to define local variables that should be stored
+in a register instead of RAM. This means that the variable has a maximum size
+equal to the register size (usually one word) and cant have the unary '&'
+operator applied to it (as it does not have a memory location).
+<pre>
+ {
+ register int Miles;
+ }
+</pre>
+Register should only be used for variables that require quick access - such
+as counters. It should also be noted that defining 'register' goes not mean
+that the variable will be stored in a register. It means that it MIGHT be stored
+in a register - depending on hardware and implimentation restrictions.<p>
+<hr>
+<h2><a name="static">static - Storage Class</h2>
+<b>static</b> is the default storage class for global variables. The two
+variables below (count and road) both have a static storage class.
+<pre>
+ static int Count;
+ int Road;
+
+ {
+ printf("%d\n", Road);
+ }
+</pre>
+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.<p>
+'static' can also be defined within a function! If this is done the variable
+is initalised at run time but is not reinitalized when the function is called.
+This is serious stuff - tread with care.
+
+<pre>
+ {
+ static Count=1;
+ }
+</pre>
+Here is an <a href="../EXAMPLES/static.c">example</a><p>
+
+<a name="static2">
+There is one very important use for 'static'. Consider this bit of code.
+<pre>
+ char *func(void);
+
+ main()
+ {
+ char *Text1;
+ Text1 = func();
+ }
+
+ char *func(void)
+ {
+ char Text2[10]="martin";
+ return(Text2);
+ }
+</pre>
+
+Now, 'func' returns a pointer to the memory location where 'text2' starts
+BUT text2 has a storage class of 'auto' and will disappear when we exit the
+function and could be overwritten but something else. The answer is to specify
+<pre>
+ static char Text[10]="martin";
+</pre>
+The storage assigned to 'text2' will remain reserved for the duration if the
+program.
+<p>
+<hr>
+<font color=brown>
+C++ has overloaded static, <a href="../../CPLUSPLUS/SYNTAX/static.htm">here
+are the details.</a>
+</font>
+<hr>
+<h2><a name="extern">extern - storage Class</h2>
+<b>extern</b> defines a global variable that is visable to ALL object
+modules. When you use 'extern' the variable cannot be initalized as
+all it does is point the variable name at a storage location that has
+been previously defined.
+
+<table border=2 width="80%" bgcolor="ivory">
+<th align=center>
+Source 1
+</th>
+<th>
+Source 2
+</th>
+<tr>
+<td>
+<pre>
+
+extern int count; int count=5;
+
+write() main()
+{ {
+ printf("count is %d\n", count); write();
+} }
+</pre>
+</td>
+<td>
+test
+</td>
+</tr>
+</table>
+
+Count in 'source 1' will have a value of 5. If source 1 changes the
+value of count - source 2 will see the new value. Here are some example
+source files.
+<p>
+<a href="../EXAMPLES/extern1.c">Source 1</a><br>
+<a href="../EXAMPLES/extern2.c">Source 2</a><p>
+
+The compile command will look something like.<p>
+<pre>
+ gcc source1.c source2.c -o program
+</pre>
+
+<hr>
+<h2>See Also:</h2>
+<a href="../CONCEPT/data_types.html">Data types.</a>
+
+
+<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>
diff --git a/reference/C/SYNTAX/struct.html b/reference/C/SYNTAX/struct.html
new file mode 100644
index 0000000..6465ee6
--- /dev/null
+++ b/reference/C/SYNTAX/struct.html
@@ -0,0 +1,392 @@
+<title>STRUCT keyword </title>
+
+<head>
+<script language="JavaScript">
+</script>
+</head>
+
+<body bgcolor="#ffffcc">
+<hr>
+<center><h1>STRUCT keyword </h1></center>
+<hr>
+<p>
+
+<ul>
+<li><a href="#basics">Structure basics.</a>
+<li><a href="#membership">Structure membership.</a>
+<li><a href="#pointers">Pointers to structures.</a>
+<li><a href="#array">Array of structures.</a>
+<li><a href="#geek">The bottom draw..</a>
+<li><a href="../../CPLUSPLUS/SYNTAX/struct.html">C++ extensions</a>
+</ul>
+
+<a name=basics>
+<hr>
+<h2>Structure basics</h2>
+
+<b>struct</b> is used to declare a new
+<a href="../CONCEPT/data_types.html">data-type</a>.
+Basically this means
+grouping variables together. For example, a struct data type could be used
+to declare the format of the following file.<p>
+
+<center>
+<table border=1 bgcolor="ivory">
+<tr><td>
+<pre>
+ Jo Loss Maths A
+ Harry Carpenter English A
+ Billy King Maths C
+</pre>
+</td></tr>
+</table>
+</center>
+<p>
+
+The records above could be described in a struct as follows:
+<p>
+<center>
+<table border=1 bgcolor="ivory">
+<tr><td>
+<pre>
+
+ struct
+ {
+ char cname[8];
+ char sname[16];
+ char exam[16];
+ char grade;
+ } record;
+
+</pre>
+</td></tr>
+</table>
+</center>
+<p>
+The statement above declares a variable called <b>record</b> with 4 members
+called <b>cname, sname, exam, grade</b>. The structure as a whole can be
+referred to as <b>record</b> and a member can be referenced as
+<b>record.exam</b>
+<p>
+
+Structures can be declared in various forms...
+<p>
+
+<pre>
+ struct x {int a; int b; int c;}; /* declaration */
+ struct {int a; int b; int c;} z;
+ struct x z;
+</pre>
+All the examples above are structure declarations,
+<ul>
+<li>The first gives <b>x</b> as a 'structure tag' - this is optional.
+<li>The first and second declare the members of the structure.
+<li>Second and third give <b>z</b> this is the variable that assumes the
+structure type.
+</ul>
+<p>
+
+<a name=membership>
+<hr>
+<h2>Structure membership</h2>
+
+We can access individual members of a structure with the . operator.<p>
+For example to assign a value, we can enter:
+<p>
+<center>
+<table border=1 bgcolor="ivory">
+<tr><td>
+<pre>
+
+ struct x {int a; int b; int c;};
+
+ main()
+ {
+ struct x z;
+
+ z.a = 10;
+ z.b = 20;
+ z.c = 30;
+ }
+
+</pre>
+</td></tr>
+</table>
+</center>
+<p>
+And to retrieve a value from a structure member:
+<p>
+<center>
+<table border=1 bgcolor="ivory">
+<tr><td>
+<pre>
+
+ struct x
+ {
+ int a;
+ int b;
+ int c;
+ };
+
+ main()
+ {
+ struct x z;
+
+ z.a = 10;
+ z.a++;
+
+ printf(" first member is %d \n", z.a);
+ }
+
+</pre>
+</td></tr>
+</table>
+</center>
+<p>
+<a name=pointers>
+<hr>
+<h2>Pointers to structures</h2>
+
+<a href="#arrow">Fast path to an explanation of the -> operator.</a>
+<p>
+
+All that we have discussed so far has been OK but runs into problems
+when structures have to be moved between functions for the following
+reasons.
+<ul>
+<li>If the structure is large it is more effiecent to pass a
+<a href="../CONCEPT/pointers.html">pointer</a> to the structure
+instead of the structure its self. This technic is also used to pass
+<a href="../CONCEPT/pointers.html#arrays">pointers to arrays</a> between
+<a href="functions.html#2.5">functions.</a>
+<p>
+<li>When passing a structure to a function, you actually pass a COPY of the
+structure. Therefore it is not possible to change the values of members
+within the structure as the copy is destroyed when the function ends.
+</ul>
+<p>
+So how does it all work? Here is an example. (make your browser W-I-D-E so
+you can see the two examples).
+<p>
+<center>
+<table border=1 bgcolor="ivory">
+<tr><td>
+<pre>
+ |
+ |
+ struct x {int a; int b; int c;} ; | struct x {int a; int b; int c;} ;
+ |
+ void function(struct x); | void function(struct x *);
+ |
+ main() | main()
+ { | {
+ struct x z; | struct x z, *pz; <font color=red>/* 3 */</font>
+ | pz = &z; <font color=red>/* 4 */</font>
+ z.a = 10; <font color=red>/* 1 */</font> | z.a = 10;
+ z.a++; | z.a++;
+ |
+ function(z); <font color=red>/* 2 */</font> | function(pz); <font color=red>/* 5 */</font>
+ } | }
+ |
+ void function( struct x z) | void function(struct x * pz)
+ { | { <font color=red>/* 6 */</font>
+ printf(" first member %d \n", z.a);| printf(" first member %d \n", (*pz).a);
+ } | }
+ |
+</pre>
+</td></tr>
+</table>
+</center>
+<p>
+Here is the annotation.
+<ol>
+<li>Give a structure member a value.
+<li>Pass a COPY of the whole structure to the function.
+<li>Define 'pz' a pointer to a structure of type 'x'.
+<li>Put the address of 'z' into 'pz'. 'pz' now POINTS to 'z'.
+PLEASE NOTE. 'z' is defined to reserve memory equal to the size of the
+structure. 'pz' only holds an address so will be 4 bytes long.
+<li>Pass the pointer into the function.
+<li>Print the value of the member 'a'.
+</ol>
+
+<a name=arrow>
+The <b>(*pz).a</b> syntax is used a great deal in C and it was decided to create
+a short hand for it. So:
+
+<pre>
+ (*pz).a == pz->a
+</pre>
+
+Here is the final picture.
+<pre>
+
+ /*************************************************************************/
+
+ struct x {int a; int b; int c;} ; /* Declare the structure. */
+
+ void function(struct x * ); /* Declare the function. */
+
+ /*************************************************************************/
+
+ main()
+ {
+ /* Declare two variables.
+ * z == type struct x
+ * pz == a pointer to type struct x
+ */
+ struct x z, *pz;
+
+ pz = &z; /* put the address of 'z' into 'pz' */
+ z.a = 10; /* initialize z.a */
+ z.a++; /* Increment z.a */
+
+ /* print the contents of 'z.a'
+ * using the pointer 'pz' */
+
+ printf(" first member before the function call %d \n", pz->a);
+
+ /* Call 'function' passing the
+ * pointer 'pz' */
+ function(pz);
+
+ /* Print the NEW value of 'z.a'
+ * using three different notations */
+ printf(" first member after the function call %d \n", pz->a);
+ printf(" first member after the function call %d \n", (*pz).a);
+ printf(" first member after the function call %d \n", z.a);
+
+ }
+
+ /*************************************************************************/
+
+ void function(struct x * pz)
+ {
+ /* Print the value of 'z.a' by
+ * referencing the pointer 'pz'
+ * which holds the address of 'z' */
+ printf(" first member inside the function %d \n", pz->a);
+
+ /* Increment the value of 'z.a'
+ * this is the source location
+ * in memory. */
+ pz->a++;
+
+ }
+
+ /*************************************************************************/
+
+
+</pre>
+
+<a name=geek>
+<p>
+<hr>
+<h2>The Bottom Draw</h2>
+
+Finally, here is a little feature that allows you to save a little
+space.
+<p>
+<center>
+<table border=1 bgcolor="ivory">
+<tr><td>
+<pre>
+
+ main()
+ {
+ struct Flags
+ {
+ unsigned int Online <font color=red>:1</font>;
+ unsigned int Mounted <font color=red>:1</font>;
+ }
+
+ struct Flags TapeInfo;
+
+ TapeInfo.Online = 1;
+ TapeInfo.Mounted = 0;
+ }
+
+</pre>
+</td></tr>
+</table>
+</center>
+<p>
+The <font color=red>:1</font> tells the compiler that only 1 byte is
+required for <b>Online</b> and <b>Mounted</b>. There are a few points to
+note about this though.
+<ul>
+<li>You may expect the compiler to reserve 2 bytes for the structure, it
+actually reserves one word (usually 4 bytes) as this is the smallest unit
+that can be reserved, the remaining 2 bytes are unavailable.
+This is still better than the 2 words that wold normally get reserved.
+<li>You can put any number into the variable, if the number is too large
+to fit, the high order bits are lost without warning.
+<li>Only <b>signed int</b>, <b>unsigned int</b>, <b>int</b> support this syntax.
+</ul>
+<hr>
+
+<h2>Examples</h2>
+<p>
+<img src="../../GRAPHICS/computer.gif">
+<a href="../EXAMPLES/struct1.c">
+This is the most basic <b>struct</b> example I could think of.</a>
+<br>
+
+<img src="../../GRAPHICS/computer.gif">
+<a href="../EXAMPLES/struct2.c">
+Using structure elements, and passing them into a function.</a>
+<br>
+
+<img src="../../GRAPHICS/computer.gif">
+<a href="../EXAMPLES/struct3.c">
+Passing a whole structure to a function.</a> This performs a copy of the
+structure so the same rules apply as for <b>int</b> etc.
+Pointers to structures can be passed but I have not got to them yet....
+<br>
+
+<a name=array>
+<img src="../../GRAPHICS/computer.gif">
+<a href="../EXAMPLES/struct4.c">Define and use an array of structures.</a>
+<br>
+
+<img src=../../GRAPHICS/help.gif>
+<a href="../PROBLEMS/problems.html#struct">
+Here is a <b>struct</b> problem for you.</a>
+
+
+
+<hr>
+<h2>See Also:</h2>
+<img src=../../GRAPHICS/whiteball.gif>
+<a href="typedef.html">typedef</a> keyword.
+<br>
+<img src=../../GRAPHICS/whiteball.gif>
+<a href="../MISC/linklists.html">Linked lists</a>.
+<br>
+
+
+<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>
diff --git a/reference/C/SYNTAX/switch.html b/reference/C/SYNTAX/switch.html
new file mode 100644
index 0000000..7fb870f
--- /dev/null
+++ b/reference/C/SYNTAX/switch.html
@@ -0,0 +1,233 @@
+<title>switch/case keywords</title>
+
+<head>
+<script language="JavaScript">
+</script>
+</head>
+
+<body bgcolor="#ffffcc">
+<hr>
+<center>
+<h1>The 'switch' and 'case' keywords</h1>
+</center>
+<hr>
+<p>
+
+The <b>switch-case</b> statement is a multi-way decision statement. Unlike the
+multiple decision statement that can be created using
+<a href=if.html>if-else</a>, the <b>switch</b>
+statement evaluates the conditional
+<a href="../CONCEPT/expressions.html">expression</a> and tests it against
+numerous
+<a href="../CONCEPT/constants.html">constant</a>
+values. The branch corresponding to the value that the
+expression matches is taken during execution.
+<p>
+The value of the expressions in a switch-case statement must be an ordinal
+type i.e.
+<a href="../CONCEPT/data_types.html">integer, char, short, long</a>,
+etc. Float and double are not
+allowed.
+<p>
+The syntax is :
+<p>
+<center>
+<table bgcolor="ivory">
+<tr>
+<td>
+<pre>
+
+ switch( expression )
+ {
+ case constant-expression1: statements1;
+ [case constant-expression2: statements2;]
+ [case constant-expression3: statements3;]
+ [default : statements4;]
+ }
+</pre>
+</td>
+</tr>
+</table>
+</center>
+<p>
+
+The <b>case</b> statements and the <b>default</b> statement can occur in any
+order in
+the <b>switch</b> statement. The <b>default</b> clause is an optional clause
+that is
+matched if none of the constants in the <b>case</b> statements can be matched.
+<p>
+Consider the example shown below:
+<p>
+<center>
+<table bgcolor="ivory">
+<tr>
+<td>
+<pre>
+
+ switch( Grade )
+ {
+ case 'A' : printf( "Excellent" );
+ case 'B' : printf( "Good" );
+ case 'C' : printf( "OK" );
+ case 'D' : printf( "Mmmmm...." );
+ case 'F' : printf( "You must do better than this" );
+ default : printf( "What is your grade anyway?" );
+ }
+</pre>
+</td>
+</tr>
+</table>
+</center>
+<p>
+
+Here, if the Grade is 'A' then the output will be
+<p>
+<center>
+<table bgcolor="ivory">
+<tr>
+<td>
+<pre>
+ Excellent
+ Good
+ OK
+ Mmmmm....
+ You must do better than this
+ What is your grade anyway?
+</pre>
+</td>
+</tr>
+</table>
+</center>
+<p>
+
+This is because, in the 'C' <b>switch</b> statement, execution continues on into
+the next case clause if it is not explicitly specified that the execution
+should exit the <b>switch</b> statement. The correct statement would be:
+<p>
+<center>
+<table bgcolor="ivory">
+<tr>
+<td>
+<pre>
+
+ switch( Grade )
+ {
+ case 'A' : printf( "Excellent" );
+ break;
+
+ case 'B' : printf( "Good" );
+ break;
+
+ case 'C' : printf( "OK" );
+ break;
+
+ case 'D' : printf( "Mmmmm...." );
+ break;
+
+ case 'F' : printf( "You must do better than this" );
+ break;
+
+ default : printf( "What is your grade anyway?" );
+ break;
+ }
+</pre>
+</td>
+</tr>
+</table>
+</center>
+<p>
+
+Although the <b>break</b> in the <b>default</b> clause (or in general, after
+the last
+clause) is not necessary, it is good programming practice to put it in
+anyway.
+<p>
+An example where it is better to allow the execution to continue into the
+next <b>case</b> statement:
+<p>
+<center>
+<table bgcolor="ivory">
+<tr>
+<td>
+<pre>
+
+ char Ch;
+ .
+ .
+ switch( Ch )
+ {
+ /* Handle lower-case characters */
+ case 'a' :
+ case 'b' :
+ .
+ .
+ .
+ case 'z' :
+ printf( "%c is a lower-case character.\n", Ch );
+ printf( "Its upper-case is %c.\n" toupper(Ch) );
+ break;
+
+ /* Handle upper-case characters */
+ case 'A' :
+ case 'B' :
+ .
+ .
+ .
+ case 'Z' :
+ printf( "%c is a upper-case character.\n", Ch );
+ printf( "Its lower-case is %c.\n" tolower(Ch) );
+ break;
+
+ /* Handle digits and special characters */
+
+ default :
+ printf( "%c is not in the alphabet.\n", Ch );
+ break;
+
+ }
+ .
+ .
+</pre>
+</td>
+</tr>
+</table>
+</center>
+<p>
+
+<hr>
+<h2>Example:</h2>
+<img src="../../GRAPHICS/computer.gif" align=center>
+<a href=../EXAMPLES/switch.c>Basic <b>switch</b> example.</a>
+<br clear=left>
+<hr>
+<h2>See also:</h2>
+<ul>
+<li><a href=if.html>if keyword</a>.
+</ul>
+
+<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>
diff --git a/reference/C/SYNTAX/syntax.gif b/reference/C/SYNTAX/syntax.gif
new file mode 100644
index 0000000..737bb1f
--- /dev/null
+++ b/reference/C/SYNTAX/syntax.gif
Binary files differ
diff --git a/reference/C/SYNTAX/syntax.html b/reference/C/SYNTAX/syntax.html
new file mode 100644
index 0000000..7dcfce4
--- /dev/null
+++ b/reference/C/SYNTAX/syntax.html
@@ -0,0 +1,135 @@
+<html>
+<head>
+<title>C Syntax</title>
+<script language="JavaScript">
+
+agent = navigator.userAgent
+
+browserVer = 2
+
+if (agent.indexOf("a/3",6) == -1)
+{
+ browserVer = 2
+}
+else
+{
+ browserVer = 1
+}
+if (agent.indexOf("a/3",6) == -1)
+{
+ browserVer = 2
+}
+else
+{
+ browserVer = 1
+}
+
+if (browserVer == 1)
+{
+ Active = new Image(26,14);
+ Active.src = "../../GRAPHICS/redball.gif"
+ NotActive = new Image(26,14);
+ NotActive.src = "../../GRAPHICS/whiteball.gif"
+}
+
+// ...................................................................
+
+function Blob(Href, Name, Str)
+{
+ Text = "<img src=../../GRAPHICS/whiteball.gif width=26 height=14 alt=\"o\" name=\"" + Name + "\">";
+ Text += "<a href=\"" + Href + "\" onmouseover=\"HiLite('" + Name + "', 'Active')\"";
+ Text += " onmouseout=\"HiLite('" + Name + "', 'NotActive')\">" + Str + "</a>";
+
+ document.write(Text);
+}
+
+// ...................................................................
+
+function HiLite(imgDocID, NewImage)
+{
+ if (browserVer == 1)
+ {
+ document.images[imgDocID].src = eval(NewImage + ".src")
+ }
+}
+
+</script>
+</head>
+<body bgcolor="#ffffcc">
+<hr>
+<center>
+<img src="../../GRAPHICS/syntax.gif" alt="Syntax">
+</center>
+<hr>
+<p>
+The following items highlight the main areas of C syntax.
+<p>
+<hr>
+<font size=-1>
+If nothing appears below this line,
+<a href=syntax_p.html>click on low tech links.</a>
+</font>
+<hr>
+<dl>
+<dt><script>Blob("keywords.html", "A", " C Keywords.");</script>
+<dt><script>Blob("../../CPLUSPLUS/SYNTAX/keywords.html","B", " C++ Keywords.");</script>
+<dt><script>Blob("comments.html", "C", " Comments.");</script>
+<dt><script>Blob("../CONCEPT/constants.html", "D", " Constants.");</script>
+<dt><script>Blob("../CONCEPT/expressions.html", "E", " Expressions/Operators.");</script>
+<dt><script>Blob("../CONCEPT/precedence.html", "F", " Operator Precedence.");</script>
+<dt><script>Blob("statements.html", "G", " Statements and blocks.");</script>
+<p>
+
+<dt><script>Blob("glo_int_vars.html", "H", " Global and local variable declaration.");</script>
+<dt><script>Blob("../CONCEPT/data_types.html", "I", " Variable declaration - data types.");</script>
+<dt><script>Blob("../CONCEPT/type_conv.html", "J", " Data type conversion.");</script>
+<dt><script>Blob("../CONCEPT/storage_class.html", "K", " Variable declaration - Storage Class.");</script>
+<dt><script>Blob("../CONCEPT/cast.html", "L", " cast.");</script>
+<dt><script>Blob("../CONCEPT/true_false.html", "M", " TRUE and FALSE.");</script>
+<p>
+
+<dt><script>Blob("../CONCEPT/arrays.html", "N", " Arrays.");</script>
+<dt><script>Blob("../CONCEPT/pointers.html", "O", " Pointers.");</script>
+<dt><script>Blob("struct.html", "P", " Structures.");</script>
+<dt><script>Blob("../MISC/linklists.html", "Q", " Linklists.");</script>
+<p>
+
+<dt><script>Blob("../CONCEPT/bitwise.html", "R", " Bitwise operations.");</script>
+<p>
+
+<dt><script>Blob("preprocessors.html", "S", " Preprocessors.");</script>
+<dt><script>Blob("macros.html", "T", " Macros.");</script>
+<p>
+
+<dt><script>Blob("idioms.html", "U", " Idioms.");</script>
+<p>
+<dt><script>Blob("functions.html", "V", " Functions - passing and returning arguments.");</script>
+<dt><script>Blob("../FUNCTIONS/funcref.htm", "W", " Function Quick Reference.");</script>
+
+</dl>
+
+<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>
diff --git a/reference/C/SYNTAX/syntax_p.html b/reference/C/SYNTAX/syntax_p.html
new file mode 100644
index 0000000..1c3d11d
--- /dev/null
+++ b/reference/C/SYNTAX/syntax_p.html
@@ -0,0 +1,110 @@
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <meta name="GENERATOR" content="Mozilla/4.5 [en] (X11; I; Linux 2.0.36 i586) [Netscape]">
+ <title>C Syntax</title>
+</head>
+<body bgcolor="#FFFFCC">
+
+<hr>
+<center><img SRC="syntax.gif" height=54 width=221></center>
+
+<hr>
+<p>The following items highlight the main areas of C syntax.
+<p>
+<hr><font size=-1>If your browser can support JavaScript <a href="syntax.html">click
+here.</a></font>
+<hr>
+<ul>
+<li>
+<a href="keywords.html">C Keywords.</a></li>
+
+<li>
+<a href="../../CPLUSPLUS/SYNTAX/keywords.html">C++ Keywords.</a></li>
+
+<li>
+<a href="comments.html">Comments.</a></li>
+
+<li>
+<a href="../CONCEPT/constants.html">Constants.</a></li>
+
+<li>
+<a href="../CONCEPT/expressions.html">Expressions.</a></li>
+
+<li>
+<a href="../CONCEPT/precedence.html">Operator Precedence.</a></li>
+
+<li>
+<a href="statements.html">Statements and blocks.</a></li>
+
+<li>
+<a href="glo_int_vars.html">Global and local variable declaration.</a></li>
+
+<li>
+<a href="../CONCEPT/data_types.html">Variable declaration - data types.</a></li>
+
+<li>
+<a href="../CONCEPT/type_conv.html">Data type conversion.</a></li>
+
+<li>
+<a href="../CONCEPT/storage_class.html">Variable declaration.</a></li>
+
+<li>
+<a href="../CONCEPT/cast.html">cast.</a></li>
+
+<li>
+<a href="../CONCEPT/true_false.html">TRUE and FALSE.</a></li>
+
+<li>
+<a href="../CONCEPT/arrays.html">Arrays.</a></li>
+
+<li>
+<a href="../CONCEPT/pointers.html">Pointers.</a></li>
+
+<li>
+<a href="struct.html">Structures.</a></li>
+
+<li>
+<a href="../MISC/linklists.html">Linklists.</a></li>
+
+<li>
+<a href="../CONCEPT/bitwise.html">Bitwise operations.</a></li>
+
+<li>
+<a href="preprocessors.html">Preprocessors.</a></li>
+
+<li>
+<a href="macros.html">Macros</a></li>
+
+<li>
+<a href="idioms.html">Idioms.</a></li>
+
+<li>
+<a href="functions.html">Functions - passing and returning arguments.</a></li>
+
+<li>
+<a href="../FUNCTIONS/funcref.htm">Function Quick Reference.</a></li>
+</ul>
+
+<hr>
+<center><table BORDER=2 WIDTH="80%" BGCOLOR="#FFFFF0" >
+<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>
+
+</body>
+</html>
diff --git a/reference/C/SYNTAX/typedef.html b/reference/C/SYNTAX/typedef.html
new file mode 100644
index 0000000..e9cb665
--- /dev/null
+++ b/reference/C/SYNTAX/typedef.html
@@ -0,0 +1,140 @@
+<html>
+<head>
+<title>The TYPEDEF keyword.</title>
+<script language="JavaScript">
+</script>
+</head>
+<body bgcolor="#ffffcc">
+<hr>
+<center><h1>The TYPEDEF keyword.</h1></center>
+<hr>
+<p>
+Every variable has a
+<a href="../CONCEPT/data_types.html">data type</a>. <b>typedef</b> is used to define
+new data type names to make a program more readable to the programmer.
+<p>
+For example:
+<p>
+<table border=1 width="100%" bgcolor="ivory">
+<tr><td>
+<pre>
+
+ |
+ main() | main()
+ { | {
+ int money; | typedef int Pounds;
+ money = 2; | Pounds money = 2
+ } | }
+</pre>
+</td></tr></table>
+<p>
+These examples are EXACTLY the same to the compiler. But the right hand
+example tells the programmer the type of money he is dealing with.
+<p>
+<a name=boolean></a>
+A common use for typedef is to define a boolean data type as below.
+<font color="brown">
+<br>
+Note: Recent C++ compilers have introduced a <a href="../../CPLUSPLUS/SYNTAX/bool.html">boolean</a> datatype.
+<p>
+</font>
+<p>
+<table border=1 width="100%" bgcolor="ivory">
+<tr><td>
+<pre>
+
+ typedef enum {FALSE=0, TRUE} Boolean
+
+ main ()
+ {
+ Boolean flag = TRUE;
+ }
+
+</pre>
+</td></tr></table>
+<p>
+
+And as a final example, how about creating a string datatype?
+<p>
+<table border=1 width="100%" bgcolor="ivory">
+<tr><td>
+<pre>
+
+ typedef char *String;
+
+ main()
+ {
+ String Text = "Thunderbird";
+
+ printf("%s\n", Text);
+ }
+
+</pre>
+</td></tr></table>
+<p>
+
+The main use for typedef seems to be defining
+<a href="struct.html">structures</a>. For example:
+<p>
+<table border=1 width="100%" bgcolor="ivory">
+<tr><td>
+<pre>
+
+ typedef struct {int age; char *name} person;
+ person people;
+
+</pre>
+</td></tr></table>
+<p>
+
+Take care to note that <b>person</b> is now a type specifier and NOT a
+variable name.
+<p>
+As a final note, you can create several data types in one hit.
+<table border=1 width="100%" bgcolor=ivory>
+<tr><td>
+<pre>
+
+
+ typedef int Pounds, Shillings, Pennies, Dollars, Cents;
+
+</pre>
+</td></tr></table>
+<p>
+
+<p>
+<hr>
+<h2>Examples:</h2>
+<img src="../../GRAPHICS/computer.gif" align=center>
+<a href="../EXAMPLES/linklst3.c">Here is a rather heavy example of typedef.</a>
+<br clear=left>
+<hr>
+<h2>Notes:</h2>
+I would expect to see 'typedef' in header files.
+
+<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>
+
diff --git a/reference/C/SYNTAX/union.html b/reference/C/SYNTAX/union.html
new file mode 100644
index 0000000..5334e3b
--- /dev/null
+++ b/reference/C/SYNTAX/union.html
@@ -0,0 +1,89 @@
+<title>The UNION keyword.</title>
+<head>
+<script language="JavaScript">
+</script>
+</head>
+<body bgcolor="#ffffcc">
+<hr>
+<center><h1>The UNION keyword.</h1></center>
+<hr>
+
+The <b>union</b> <a href="../glossary.html#keyword">keyword</a> allows several
+variables of different type and size to occupy the same storage location.
+<p>
+The syntax to define a union is simular to the
+<a href="struct.html">struct</a> keyword as shown below:<p>
+
+
+<pre>
+ union union_def { int a; float b; char c;} ;
+</pre>
+
+and a variable declared with either of these statements:
+
+<pre>
+ union union_def union_var;
+ union { int a; float b; char c;} union_var;
+</pre>
+
+If you wish to initalise a variable you can say:
+
+<pre>
+ union { int a; float b; char c;} union_var=97;
+</pre>
+
+By default the first variable (<b>a</b>) is initalised.
+<p>
+
+To assign a value to a variable you can say:
+
+<pre>
+ union_var.b=99.99;
+ union_var.a=34;
+ union_var.c='x';
+</pre>
+It's important to note that the storage will only hold ONE value,
+looking at the
+three lines above, <b>union_var.a</b> overwrites <b>union_var.b</b> and
+then <b>union_var.c</b> overwrites <b>union_var.a</b><p>
+
+
+
+I have yet to see more than one use for this keyword.
+<hr>
+<h2>Examples:</h2>
+<img src="../../GRAPHICS/computer.gif" align=left>
+<a href="../EXAMPLES/union.c"> Here is an example.</a>
+<br clear=left>
+<hr>
+<h2>See also:</h2>
+<ul>
+<li><a href="struct.html">struct</a> keyword.
+</ul>
+
+
+<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>
diff --git a/reference/C/SYNTAX/void.html b/reference/C/SYNTAX/void.html
new file mode 100644
index 0000000..51c5b03
--- /dev/null
+++ b/reference/C/SYNTAX/void.html
@@ -0,0 +1,104 @@
+<title>The VOID keyword.</title>
+<head>
+<script language="JavaScript">
+</script>
+</head>
+<body bgcolor="#ffffcc">
+<hr>
+<center><h1>The VOID keyword.</h1></center>
+<hr>
+<p>
+The <b>void</b> <a href="../glossary.html#keyword">keyword</a>
+allows us to create functions that either do not require any
+parameters or do not return a value.<p>
+The following example shows a function that does not return
+a value.
+<p>
+<table border=2 width="100%" bgcolor=ivory>
+<tr>
+<td>
+<pre>
+
+ void Print_Square(int Number);
+
+ main()
+ {
+ Print_Square(10);
+ exit(0);
+ }
+
+ void Print_Square(int Number)
+ {
+ printf("%d squared is %d\n",Number, Number*Number);
+ }
+</pre>
+</td>
+</tr>
+</table>
+<p>
+The next example shows a function that does not require any parameters:
+<p>
+<table border=2 width="100%" bgcolor=ivory>
+<tr>
+<td>
+<pre>
+
+ #include <stdlib.h>
+ #include <time.h>
+
+ int Random(void);
+
+ main()
+ {
+ printf("A random number is %d\n", Random());
+ exit(0);
+ }
+
+ int Random(void)
+ {
+ srand((unsigned int)time((time_t *)NULL));
+ return( rand());
+ }
+
+</pre>
+</td>
+</tr>
+</table>
+<p>
+<hr>
+<h2>Example:</h2>
+<img src="../../GRAPHICS/computer.gif">
+<a href="../EXAMPLES/pointer_func.c">void example</a>
+<hr>
+<h2>See also:</h2>
+<img src="../../GRAPHICS/whiteball.gif">
+<a href="../SYNTAX/functions.html">Functions</a>
+<a href="../SYNTAX/functions.html#void">Void pointers</a>
+<p>
+
+
+<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>
diff --git a/reference/C/SYNTAX/volatile.html b/reference/C/SYNTAX/volatile.html
new file mode 100644
index 0000000..1de9b13
--- /dev/null
+++ b/reference/C/SYNTAX/volatile.html
@@ -0,0 +1,97 @@
+<html>
+<head>
+<title>The VOLATILE keyword.</title>
+<script language="JavaScript">
+</script>
+</head>
+<body bgcolor="#ffffcc">
+<hr>
+<center><h1>The VOLATILE keyword.</h1></center>
+<hr>
+I have had several sugestions on how to describe volatile,
+If you have any input please mail me.
+<ul>
+<li>The <b>volatile</b> <a href="../glossary.html#keyword">keyword</a> acts as a
+<a href="../CONCEPT/data_types.html">data type</a> qualifier.
+The qualifier alters the default why in which
+the compiler handles the variable and does not attempt to optimize the
+storage referenced by it. <i>Martin Leslie</i>
+<p>
+<li><b>volatile</b> means the storage is likely to change at anytime
+and be changed but something outside the control of the user program.
+This means that if you reference the variable,
+the program should always check the physical address (ie a mapped input fifo),
+and not use it in a cashed way.<i>Stephen Hunt</i>
+<p>
+<li>Here is an example for the usage of the volatile keyword:
+<pre>
+ /* Base address of the data input latch */
+
+ volatile unsigned char *baseAddr;
+
+ /* read parts of output latch */
+
+ lsb = *handle-&gt;baseAddr;
+ middle = *handle-&gt;baseAddr;
+ msb = *handle-&gt;baseAddr;
+</pre>
+Between reads the bytes are changed in the latch.
+<p>
+Without the volatile, the compiler optimises this to a single assignment:
+<pre>
+ lsb = middle = msb = *handle-&gt;baseAddr;
+</pre>
+<i>Tim Potter</i>
+<p>
+<li>A <b>volatile</b> variable is for dynamic use. E.G. for data that is to
+be passed to an I/O port Here is an example.
+
+<pre>
+ #define TTYPORT 0x17755U
+
+ volatile char *port17 = (char)*TTYPORT;
+ *port17 = 'o';
+ *port17 = 'N';
+</pre>
+Without the <b>volatile</b> modifier, the compiler would think that the
+statement <code>*port17 = 'o';</code> is redundant and would remove it
+from the object code. The volatile statement prevents the compiler
+optimisation.<i>Alex Arzon</i>.
+</ul>
+
+<hr>
+<h2>Examples:</h2>
+<img src="../../GRAPHICS/computer.gif" align=left alt="o"> No example:-(
+<br clear=left>
+<hr>
+<h2>See also:</h2>
+<ul>
+<li><a href="../CONCEPT/data_types.html#qualifier">const qualifier</a>
+</ul>
+
+
+<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>
diff --git a/reference/C/SYNTAX/while.html b/reference/C/SYNTAX/while.html
new file mode 100644
index 0000000..ef083f9
--- /dev/null
+++ b/reference/C/SYNTAX/while.html
@@ -0,0 +1,160 @@
+<html>
+<head>
+<title>The WHILE keyword.</title>
+<script language="JavaScript">
+</script>
+</head>
+<body bgcolor="#ffffcc">
+<hr>
+<center><h1>The WHILE keyword.</h1></center>
+<hr>
+The <b>while</b> keyword is related to <a href=do.html>do</a>
+and <a href=for.html>for</a>. Its purpose is to repeatedly execute
+a <a href="statements.html#blocks">block</a> of statements. Here is
+an example :
+
+<p>
+<center>
+<table border=1 width="80%" bgcolor="ivory">
+<tr>
+<td>
+<pre>
+
+ main()
+ {
+ int i=5;
+
+ while(--i)
+ {
+ printf(" i is %d\n", i);
+ }
+ }
+</pre>
+</td>
+</tr>
+</table>
+</center>
+<p>
+
+The expression <b>i--</b> is evaluated and if its
+<a href="../CONCEPT/true_false.html">true</a> the statements in the
+<a href="statements.html#blocks">block</a> are executed.
+The loop continues until the expression is false (zero).
+The result will look like this:
+
+<p>
+<center>
+<table border=1 width="80%" bgcolor="ivory">
+<tr>
+<td>
+<pre>
+
+ i is 4
+ i is 3
+ i is 2
+ i is 1
+</pre>
+</td>
+</tr>
+</table>
+</center>
+<p>
+
+It is important to note that the statements
+on a <b>while</b> will not get executed if the first evaluation of the
+expression is FALSE. If you do not want this to happen you may prefer
+to use the <a href="do.html">do</a> statement.
+
+<hr>
+<p>
+Now consider the next example.
+
+<p>
+<center>
+<table border=1 width="80%" bgcolor="ivory">
+<tr>
+<td>
+<pre>
+
+ main()
+ {
+ int i=5;
+
+ while(--i);
+ {
+ printf(" i is %d\n", i);
+ }
+ }
+</pre>
+</td>
+</tr>
+</table>
+</center>
+
+
+The result will look like this:
+
+
+<p>
+<center>
+<table border=1 width="80%" bgcolor="ivory">
+<tr>
+<td>
+<pre>
+
+ i is 0
+</pre>
+</td>
+</tr>
+</table>
+</center>
+
+<p>
+This is because of the <b>;</b> on the end of the <b>while</b>
+statement which means the <b>while</b> will loop (executing NULL statements)
+until <b>i</b> is zero. Execution will then continue down the program
+(to the printf).
+<p>
+
+<hr>
+<h2>Examples:</h2>
+
+<img src="../../GRAPHICS/computer.gif" align=left alt="o">
+<a href="../EXAMPLES/while.c">Basic <b>while</b></a>.
+<br clear=left>
+
+<hr>
+<h2>See also:</h2>
+<ul>
+<li><a href="while.html">for</a> keyword.
+<li><a href="do.html">do</a> keyword.
+<li><a href="break.html">break</a> keyword.
+<li><a href="continue.html">continue</a> keyword.
+</ul>
+
+
+<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>