C will let you declare structure variables inside other structures. This is very useful. It means that you can create a structure (perhaps called person) which keeps track of a person. You could then put a field of this type inside other structures. The bank structure could contain a person item in each customer item. A library could put a person item in each "borrower" and so on...

On the right you can see an example of this in action. The name and address items have been combined to form a person structure which we place inside an account item. This means that if I need to store just person information (for perhaps a credit card or mortgage structure) I can use the person structure in there as well.

 

#define MAX_CUST 50
#define NAME_LENGTH 30
#define ADDR_LENGTH 60

/*  Create a person structure */

struct person
{
	char name [NAME_LENGTH] ;
	char address [ADDR_LENGTH] ;
        int age ;
} ;

/*  Create a customer structure */

struct customer
{
 struct person person_details ;
	int account ;
	int balance ;
	int overdraft ;
} ;