Structure Summary
What is a structure:
· Data type you create with parts
· Can contain an array / Can be contained by an array
· Passes by value unless explicitly by pointer
Defining a struct:
·        
struct workerstuff {        int rate,
hours, gross;} ;
·        
Use Typedef
o   just the tag: typedef struct workerstuff Worker;
o   the entire structure typedef struct  { int rate, hours, gross;} Worker ;
Declaration 
·        
single struct variable
o   option 1 with combined def
: struct workerstuff { int
rate, hours, gross;}  worker;
o   option 2 referencing earlier definition: struct workerstuff  worker;
o   If typedef used: Worker worker;
·        
Array of
a structure
o   struct workerstuff  workerArr[];
·        
Pointer
to a structure
o   struct workerstuff  * workerPtr;
Access variable:
·        
single struct variable – dot :  worker.rate;
·        
Array of
a structure - Access via dot and subscript:  WorkerArr[1].rate
·        
Pointer
to a structure - Access via arrow :   workerPtr->rate or (*workerPtr).rate
Union 
·        
Definition
by choices, not parts
·        
Takes on
the size of the largest possible choice
·        
Definition:
 union number {int x; int * p;};
·        
Declaration
and use have the same syntax as structure. 
Enum:
·        
Naming
constants, integer underlies it
·        
Use it
to create a variable with only those possible choices
·        
Definition:
enum days { SUN, MON, TUE, WED, THUR, FRI, SAT}; 
·        
Declaration:
enum days day;
·        
Use: day = SUN;
Good Tutorials:
• http://www.tutorialspoint.com/cprogramming/c_structures.htm
• http://denniskubes.com/2012/08/20/is-c-pass-by-value-or-reference/
• http://www.programiz.com/c-programming/c-enumeration