O'Reilly logo

Practical C Programming, 3rd Edition by Steve Oualline

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Chapter 12. Advanced Types

Total grandeur of a total edifice, Chosen by an inquisitor of structures.

Wallace Stevens

C provides the programmer with a rich set of data types. Through the use of structures, unions, and enumerated types, the programmer can extend the language with new types.

Structures

Suppose we are writing an inventory program for a warehouse. The warehouse is filled with bins that contain various parts. All the parts in a bin are identical, so we don’t have to worry about mixed bins.

For each bin, we need to know:

  • The name of the part it holds (string 30 characters long)

  • The quantity on hand (integer)

  • The price (integer cents)

In previous chapters, we have used arrays for storing a group of similar data types. However, in this example, we have a mixed bag: two integers and a string.

Instead of an array, we will use a new data type called a structure. In an array, all the elements are of the same type and are numbered. In a structure, each element or field is named and has its own data type.

The general form of a structure definition is:

structstructure-name { 
    field-type field-name;  /* comment */
    field-type field-name;  /* comment */
    . . . . 
} variable-name;

For example, we want to define a bin to hold printer cables. The structure definition is:

struct bin { 
    char    name[30];    /* name of the part */ 
    int     quantity;    /* how many are in the bin */ 
    int     cost;        /* The cost of a single part  (in cents) */ 
} printer_cable_bin;     /* where we put the print cables */

This definition actually tells ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required