Often a given entity will have a number of properties you wish to record. For example, a student might have a name, a student number, various marks etc. or a car might have a colour, a model, a year of manufacture etc. It is convenient to store all this data in one place, rather than using separate variables for each item. Structures allow you to do this.
A structure is a user defined data type that can have several different entries in it. For instance, a programmer could create a student structure that would contain all the properties s/he wanted to record about students. An example of such a structure is declared below:
struct student
{
int age;
int studentNumber;
float averageGrade;
char name[32];
};
You'll notice that the student structure has several different data types. In this case,
two ints, a float and a string. The members of a structure are declared exactly the same
way variables are declared in a C program.
Often a programmer will use structures in creating a new data type. For instance, there may be several students and each student's data should be represented using the same structure. To facilitate this, it is worth creating a new data type that can then be used repeatedly for each student.
The command typedef is used to create new data types. The general form of typedef is as follows:
typedef <variable type> <name of new type>;To create a datatype based on a structure, the variable type is simply the structure definition. For instance, the following creates a new datatype STUDENT based on the above structure:
typedef struct student
{
int age;
int studentNumber;
float averageGrade;
char name[32];
} STUDENT;
Once created, the new data type can be used like any other data type. To access individual members of the structure, the variable name is indicated, followed by a period and the name of the structure member that is being accessed. The following code demonstrates the use of structures:
#include <stdio.h>
typedef struct student
{
int age;
int studentNumber;
float averageGrade;
char name[32];
} STUDENT;
int main()
{
//create two STUDENT variables
STUDENT mary, faith;
float avg;
//assign their ages
mary.age = 14;
faith.age = 16;
//assign student numbers
mary.studentNumber = 5678;
faith.studentNumber = 5432;
//assign their average grades
mary.averageGrade = 73;
faith.averageGrade = 62.3;
//members of structures can be used in calculations like
//normal variables
avg = (mary.averageGrade + faith.averageGrade ) /2.0;
printf("Mary's student number is %d.\n", mary.studentNumber);
return 0;
}