| 
 Although arrays greatly improved our ability to store data, there is
one major drawback to their use ... each element (each box) in an array must be of the
 same data type.  It is often desirable to group data of different types and work with that grouped data as one entity. 
We now have the power to accomplish this grouping with a  new data type called a
 structure.
 A structure is a collection of variable types grouped together.
  You can refer to a structure as a single variable, and to its parts as
 members of that variable by using the dot (.) operator. 
The power of structures lies in the fact that once defined, the structure name becomes a
 user-defined data type and may be used the same way as other built-in data
types, such as int, double, 
char, and apstring.
 Defining a structure
 
 When dealing with the students in a college, many
variables of different types are needed.  It may be necessary to keep track
of a name, an address (street, city, state, zip code), an age, an ID number, and a
grade point average, for example.
 
 struct STUDENT_TYPE
 {
 apstring name, street, city, state, zipcode;
 int age;
 double IDnum;
 double grade;
 } ;
 
  
    
      |  | Note semicolon!!! | The name of the 
		struct
        is in capital letters followed by the word TYPE.  While this naming
        convention is NOT required, it may help you to remember that you have
        created a new data type. |  STUDENT_TYPE  is called the
 structure tag,  
and is
your brand new data type, like int, 
double, char or apstring.
 name, street, city, state, zipcode, age, IDnum,
and grade  are  structure members.
 
Declaring Variables of Type
  struct
 The most efficient method of dealing with structure variables is to define the structure
globally.  This tells "the whole
world", namely main and any functions in the
program, that a new data type exists.  To declare a structure globally,
place it BEFORE int main(void).  
 The structure variables can then be defined 
locally in  main, 
for example.
 . . .
 struct STUDENT_TYPE
 {
 apstring name, street, city, state, zipcode;
 int age;
 double IDnum;
 double grade;
 } ;
 
 int main(void)
 {
 // declare two variables of the new type
 STUDENT_TYPE student1, student2;
 
 // array of structures
 apvector <STUDENT_TYPE> roster(10);
 . . .
 
 
		
			
				| Alternate method of declaring variables of 
				type struct: struct STUDENT_TYPE{
 apstring name, street, city, state, zipcode;
 int age;
 double IDnum;
 double grade;
 } student1, student2;
 The variable names appear before the semicolon 
				ending the structure declaration.  This method is useful 
				only when you know how many variables of this type your program 
				will be using. |  
 |