--- /dev/null
+<TeXmacs|2.1.1>
+
+<style|<tuple|book|style-bk>>
+
+<\body>
+ <chapter|Definitions>
+
+ <section|Terminology>
+
+ <\description-compact>
+ <item*|declaration<label|term declaration>>A construct that establishes
+ an association between a particular variable, function, or type and its
+ attributes. (See <hlink|cppreference.com|https://en.cppreference.com/w/c/language/declarations>
+ and <hlink|microsoft.com|https://docs.microsoft.com/en-us/cpp/c-language/c-declarations-and-definitions>).
+ Compare with <with|font-series|bold|definition>.
+
+ <item*|definition<label|term definition>>A construct that stablishes the
+ same associations as a declaration but also causes storage to be
+ allocated for the variable. (See <hlink|microsoft.com|https://docs.microsoft.com/en-us/cpp/c-language/c-declarations-and-definitions>).
+
+ <item*|enumeration<label|term enumeration>><hlink|Enumeration|https://en.wikipedia.org/wiki/Enumeration>
+ (or <code*|enum>) is a user defined data type in <name|C>. It is mainly
+ used to assign names to integral constants. For example, the declaration
+ <code*|enum year{Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov,
+ Dec};> allows writing a for loop with names of months <code*|for (i=Jan;
+ i\<less\>=Dec; i++)> to cycle <code*|i> through the integers <code*|0, 1,
+ 2, 3, <text-dots>, 10, 11>.
+
+ <item*|escape sequence<label|term escape_sequence>>A set of characters
+ used to represent hard-to-type or invisible characters. Some commonly
+ used escape sequences in <name|C> include:
+
+ <\description-paragraphs>
+ <item*|<cpp|\\n>>Represents the <em|newline> character.
+
+ <item*|<cpp|\\t>>Represents the <em|tab> character.
+
+ <item*|<cpp|\\b>>Represents the <em|backspace> character.
+
+ <item*|<cpp|\\\\>>Represents the <em|backslash> (i.e.
+ \P<verbatim|<em|\\>>\Q) character.
+ </description-paragraphs>
+
+ All other escape sequences used in <name|C> are:
+
+ <\description-paragraphs>
+ <item*|<cpp|\\a>>Represents the <em|alert> (bell) character.
+
+ <item*|<cpp|\\f>>Represents the <em|formfeed> character.
+
+ <item*|<cpp|\\r>>Represents the <em|carriage return> character.
+
+ <item*|<cpp|\\t>>Represents the <em|horizontal tab> character.
+
+ <item*|<cpp|\\v>>Represents the <em|vertical tab> character.
+
+ <item*|<cpp|\\?>>Represents the <em|question mark> character.
+
+ <item*|<cpp|\\'>>Represents the <em|single quote> character.
+
+ <item*|<cpp|\\">>Represents the <em|double quote> character.
+
+ <item*|<cpp|\\><em|ooo>>Represents an <em|octal number> (e.g.
+ <cpp|\\012> is the <em|newline> character<\footnote>
+ <label|ref includehelp-oct-hex>See
+ <hlinkv|https://www.includehelp.com/c/octal-and-hexadecimal-escape-sequences.aspx>.
+ </footnote>).
+
+ <item*|<cpp|\\x><em|hh>>Represents a <em|hexadecimal> number (e.g.
+ <cpp|\\x0A> is the <em|newline> character<rsup|<reference|ref
+ includehelp-oct-hex>>).
+ </description-paragraphs>
+
+ <label|term garbage_collection><item*|garbage collection>The process of
+ freeing memory allocated by a program but which is no longer referenced.
+ Usually incurs a significant <hlink|speed
+ penalty|https://en.wikipedia.org/wiki/Overhead_(computing)>.
+ (<hlink|Wikipedia|https://en.wikipedia.org/wiki/Garbage_collection_(computer_science)>).
+ The <name|C> Language does not provide garbage collection by default.
+
+ <item*|<label|term heap>heap>A large pool of memory that can be used
+ dynamically \U it is also known as the \Pfree store\Q. This is memory
+ that is not automatically managed \U you have to explicitly allocate
+ (using functions such as malloc), and deallocate (e.g. free) the memory.
+ Failure to free the memory when you are finished with it will result in
+ what is known as a memory leak. Is the diametrical opposite of the stack
+ (which, by contrast, is limited not by physical memory but by a
+ CPU-determined stack size). (See <hlink|craftofcoding.wordpress.com|https://craftofcoding.wordpress.com/2015/12/07/memory-in-c-the-stack-the-heap-and-static/>).
+
+ <item*|<label|term machine-independent>machine-independent>A property of
+ code that does not have to be modified in order to run on a different
+ hardware architecture. (e.g. \PC is called a portable language because
+ [code written in C] will run on any machine which supports C, without
+ modifying a single line of code.\Q; <hlink|link|https://www.log2base2.com/C/basic/introduction-to-c-language.html>).
+
+ <item*|<label|term operand>operand>A quantity to which an operator is
+ applied. (e.g. in the <name|C> math expression <code*|7 - 4 = 3>,
+ <code*|7> is the first operand and <code*|4> is the second operand.)
+
+ <item*|<label|term operator>operator>A special type of function with
+ limited numbers of parameters (e.g. 1 to 2) and syntax often requiring a
+ set of characters different from those normally use for naming variables
+ (e.g. the <code*|+> character in <code*|myVar = 1 + 2>, the <code*|&&> in
+ <code*|a && b>, or the <code*|++> in <code*|i++>.).
+
+ <item*|<label|term stack>stack>A region of memory for global variable
+ storage and is permanent for the entire run of the program. Stack size is
+ limited not by physical memory availability but by the CPU. Lifetime of
+ local variables declared within the stack is enforced by the Last-In,
+ First-Out nature of the stack; when a function returns a value, all stack
+ memory allocated by declarations within the function is automatically
+ freed. (See <hlink|craftofcoding.wordpress.com|https://craftofcoding.wordpress.com/2015/12/07/memory-in-c-the-stack-the-heap-and-static/>)
+
+ <item*|<label|term struct>struct>(short:
+ <hlink|struct|https://en.wikipedia.org/wiki/struct_(C_programming_language)>)
+ a <hlink|composite data type|https://en.wikipedia.org/wiki/Composite_data_type>
+ that defines a physically grouped list of variables under one name in a
+ block of memory, allowing the different variables to be accessed via a
+ single <hlink|pointer|https://en.wikipedia.org/wiki/Pointer_(computer_programming)>
+ or by the struct declared name which returns the same address.
+
+ <label|term structure_assignment><item*|structure assignment>The act of
+ <hlink|assigning|https://en.wikipedia.org/wiki/Assignment_(computer_science)>
+ a <hlink|struct|https://en.wikipedia.org/wiki/struct_(C_programming_language)>
+ to another struct. (?) (<hlink|example|https://stackoverflow.com/a/2302359/10850071>)
+
+ <item*|<label|term text_stream>text stream>A sequence of characters
+ divided into lines; each line consists of zero or more characters
+ followed by a newline character. (See K&R 2nd Ed. Section 1.5 \PCharacter
+ Input and Output\Q)
+ </description-compact>
+
+ \;
+
+ <section|Functions>
+
+ <subsection|Character Input and Output>
+
+ <\description>
+ <item*|<cpp|getchar()><label|func getchar>>Read one character at a time.
+
+ <item*|<cpp|for()>>A generalization of <cpp|while()>. Takes three
+ arguments:
+
+ <\enumerate>
+ <item>Local statement to run before loop (e.g. to initialize a counting
+ variable).
+
+ <item>Local statement that, if evaluated as true, permits running of
+ next iteration of loop.
+
+ <item>Local statement to run after loop (e.g. to increment a counting
+ variable).
+ </enumerate>
+
+ <item*|<cpp|putchar()><label|func putchar>>Write one character at a time.
+
+ <item*|<cpp|printf()>>Used for printing formatted text to console.
+ </description>
+
+ \;
+
+ \;
+
+ \;
+</body>
+
+<\initial>
+ <\collection>
+ <associate|preamble|false>
+ </collection>
+</initial>
+
+<\references>
+ <\collection>
+ <associate|auto-1|<tuple|1|?>>
+ <associate|auto-2|<tuple|1.1|?>>
+ <associate|auto-3|<tuple|1.2|?>>
+ <associate|auto-4|<tuple|1.2.1|?>>
+ <associate|footnote-1.1.1|<tuple|1.1.1|?>>
+ <associate|footnote-1.1.2|<tuple|1.1.2|?>>
+ <associate|footnr-1.1.1|<tuple|1.1.1|?>>
+ <associate|footnr-1.1.2|<tuple|1.1.2|?>>
+ <associate|func getchar|<tuple|1.2.1|?>>
+ <associate|func putchar|<tuple|3|?>>
+ <associate|ref includehelp-oct-hex|<tuple|1.1.1|?>>
+ <associate|term declaration|<tuple|1.1|?>>
+ <associate|term definition|<tuple|declaration<label|term declaration>|?>>
+ <associate|term enumeration|<tuple|definition<label|term definition>|?>>
+ <associate|term escape_sequence|<tuple|enumeration<label|term
+ enumeration>|?>>
+ <associate|term foo|<tuple|structure assignment|?>>
+ <associate|term garbage_collection|<tuple|1.1.1|?>>
+ <associate|term heap|<tuple|garbage collection|?>>
+ <associate|term machine-independent|<tuple|<label|term heap>heap|?>>
+ <associate|term operand|<tuple|<label|term
+ machine-independent>machine-independent|?>>
+ <associate|term operator|<tuple|<label|term operand>operand|?>>
+ <associate|term stack|<tuple|<label|term operator>operator|?>>
+ <associate|term struct|<tuple|<label|term stack>stack|?>>
+ <associate|term structure_assignment|<tuple|<label|term struct>struct|?>>
+ <associate|term text_stream|<tuple|structure assignment|?>>
+ <associate|term-sep XX|<tuple|structure assignment|?>>
+ </collection>
+</references>
+
+<\auxiliary>
+ <\collection>
+ <\associate|toc>
+ <vspace*|1fn><with|font-series|<quote|bold>|math-font-series|<quote|bold>|1<space|2spc>Definitions>
+ <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
+ <no-break><pageref|auto-1><vspace|0.5fn>
+
+ 1.1<space|2spc>Terminology <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
+ <no-break><pageref|auto-2>
+
+ 1.2<space|2spc>Functions <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
+ <no-break><pageref|auto-3>
+
+ <with|par-left|<quote|1tab>|1.2.1<space|2spc>Character Input and Output
+ <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
+ <no-break><pageref|auto-4>>
+ </associate>
+ </collection>
+</auxiliary>
\ No newline at end of file