Structure in C and CPP with C Program Example

A structure is a data type that can contain unlimited numbers of NAMED sub categories (or fields). For example, a student record may contain the students, name, age, gpa, etc. Each category of information is defined by its name and type (e.g., name is a string, age is an integer). By placing all this information into a "structure" the computer is able to utilize it as a single "entity". In C, the fields and types must be defined before the structure is used.


The format for defining a structure is

struct Tag {
  Members
};


Where Tag is the name of the entire type of structure and Members are the variables within the struct. To actually create a single structure the syntax is

struct Tag name_of_single_structure;

To access a variable of the structure it goes

name_of_single_structure.name_of_variable;

For example:

struct example {
     int x;
};
struct example an_example; //Treating it like a normal variable type
an_example.x = 33;  //How to access its members

Here is an example program:

struct database {
     int id_number;
     int age;
     float salary;
};

int main()
{
  database employee;  //There is now an employee variable that has modifiable
                      // variables inside it.
  employee.age = 22;
  employee.id_number = 1;
  employee.salary = 12000.21;
}


The struct database declares that database has three variables in it, age, id_number, and salary. You can use database like a variable type like int. You can create an employee with the database type as I did above. Then, to modify it you call everything with the 'employee.' in front of it. You can also return structures from functions by defining their return type as a structure type. For instance:

database fn();

I will talk only a little bit about unions as well. Unions are like structures except that all the variables share the same memory. When a union is declared the compiler allocates enough memory for the largest data-type in the union. It's like a giant storage chest where you can store one large item, or a small item, but never the both at the same time.

The '.' operator is used to access different variables inside a union also.

As a final note, if you wish to have a pointer to a structure, to actually access the information stored inside the structure that is pointed to, you use the -> operator in place of the . operator. All points about pointers still apply.

A quick example:

#include <iostream>
using namespace std;
struct xampl {
  int x;
};

int main()

  xampl structure;
  xampl *ptr;
  structure.x = 12;
  ptr = &structure; // Yes, you need the & when dealing with structures
                    //  and using pointers to them
  cout<< ptr->x;    // The -> acts somewhat like the * when used with pointers
                    //  It says, get whatever is at that memory address
                    //  Not "get what that memory address is"
  cin.get();                   
}

Post a Comment

0 Comments