Structures in C: Usage and Examples

Rumman Ansari   Software Engineer   2024-07-05 03:46:10   11868  Share
Subject Syllabus DetailsSubject Details 6 Questions 7 Program
☰ TContent
☰Fullscreen

Arrays allow to define type of variables that can hold several data items of the same kind. Similarly structure is another user-defined data type available in C that allows combining data items of different kinds.

Structure helps to construct a complex data type in a more meaningful way. It is somewhat similar to an Array. The only difference is that array is used to store collection of similar datatypes while structure can store a collection of any type of data.

Structure is used to represent a record. Suppose you want to store record of Student which consists of student name, address, roll number and age. You can define a structure to hold this information.

Structure Definition in C

struct keyword is used to define a structure. struct defines a new data type which is a collection of different types of data.

struct structure_name
{
 //declaration of different data types
};

The closing braces in the structure type declaration must be followed by a semicolon(;).

Syntax of structure

struct structure_name 
{
    data_type member1;
    data_type member2;
    .
    .
    data_type memeber;
};
 

Note: Don't forget the semicolon }; in the ending line.

We can create the structure for a person as mentioned above as:

struct person
{
    char name[50];
    int citNo;
    float salary;
};

This declaration above creates the derived data type struct person.

Structure variable declaration

When a structure is defined, it creates a user-defined type but, no storage or memory is allocated.

Declaring Structure variables separately

For the above structure of a person, variable can be declared as:

struct person
{
    char name[50];
    int citNo;
    float salary;
};

int main()
{
    struct person person1, person2, person3[20];
    return 0;
}

Declaring Structure Variables with Structure definition

Another way of creating a structure variable is:

struct person
{
    char name[50];
    int citNo;
    float salary;
} person1, person2, person3[20];
 
 

In both cases, two variables person1person2 and an array person3 having 20 elements of type struct person are created.

Accessing members of a structure

There are two types of operators used for accessing members of a structure.

  1. Member operator(.)
  2. Structure pointer operator(->)

Any member of a structure can be accessed as:

structure_variable_name.member_name

Suppose, we want to access salary for variable person2. Then, it can be accessed as:

person2.salary

Structure Initialization

Like any other data type, structure variable can also be initialized at compile time.

 

struct Patient
{
 float height;
 int weight;  
 int age; 
};

struct Patient p1 = { 180.75 , 73, 23 };    //initialization

 

or

struct patient p1;
p1.height = 180.75;     //initialization of each member separately
p1.weight = 73;
p1.age = 23;

Example Program

Program

<span class="pln">
</span><span class="com">#include</span><span class="pln"> </span><span class="str">&lt;stdio.h&gt;</span><span class="pln">  
</span><span class="com">#include</span><span class="pln"> </span><span class="str">&lt;string.h&gt;</span><span class="pln">  
</span><span class="kwd">struct</span><span class="pln"> employee    
</span><span class="pun">{</span><span class="pln">   </span><span class="kwd">int</span><span class="pln"> id</span><span class="pun">;</span><span class="pln">    
    </span><span class="kwd">char</span><span class="pln"> name</span><span class="pun">[</span><span class="lit">50</span><span class="pun">];</span><span class="pln">    
</span><span class="pun">}</span><span class="pln">e1</span><span class="pun">;</span><span class="pln">  </span><span class="com">//declaring e1 variable for structure  </span><span class="pln">
</span><span class="kwd">int</span><span class="pln"> main</span><span class="pun">(</span><span class="pln"> </span><span class="pun">)</span><span class="pln">  
</span><span class="pun">{</span><span class="pln">  
   </span><span class="com">//store first employee information  </span><span class="pln">
   e1</span><span class="pun">.</span><span class="pln">id</span><span class="pun">=</span><span class="lit">101</span><span class="pun">;</span><span class="pln">  
   strcpy</span><span class="pun">(</span><span class="pln">e1</span><span class="pun">.</span><span class="pln">name</span><span class="pun">,</span><span class="pln"> </span><span class="str">"Rambo Azmi"</span><span class="pun">);</span><span class="com">//copying string into char array  </span><span class="pln">
   </span><span class="com">//printing first employee information  </span><span class="pln">
   printf</span><span class="pun">(</span><span class="pln"> </span><span class="str">"employee 1 id : %d\n"</span><span class="pun">,</span><span class="pln"> e1</span><span class="pun">.</span><span class="pln">id</span><span class="pun">);</span><span class="pln">  
   printf</span><span class="pun">(</span><span class="pln"> </span><span class="str">"employee 1 name : %s\n"</span><span class="pun">,</span><span class="pln"> e1</span><span class="pun">.</span><span class="pln">name</span><span class="pun">);</span><span class="pln">  
   </span><span class="kwd">return</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">  
</span><span class="pun">}</span><span class="pln">  
</span>

Output

employee 1 id : 101
employee 1 name : Rambo Azmi
Press any key to continue . . .

Program

<span class="pln">
</span><span class="com">#include</span><span class="pln"> </span><span class="str">&lt;stdio.h&gt;</span><span class="pln">
</span><span class="com">#include</span><span class="pln"> </span><span class="str">&lt;string.h&gt;</span><span class="pln">
 
</span><span class="kwd">struct</span><span class="pln"> </span><span class="typ">Books</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
   </span><span class="kwd">char</span><span class="pln">  title</span><span class="pun">[</span><span class="lit">50</span><span class="pun">];</span><span class="pln">
   </span><span class="kwd">char</span><span class="pln">  author</span><span class="pun">[</span><span class="lit">50</span><span class="pun">];</span><span class="pln">
   </span><span class="kwd">char</span><span class="pln">  subject</span><span class="pun">[</span><span class="lit">100</span><span class="pun">];</span><span class="pln">
   </span><span class="kwd">int</span><span class="pln">   book_id</span><span class="pun">;</span><span class="pln">
</span><span class="pun">};</span><span class="pln">
 
</span><span class="kwd">int</span><span class="pln"> main</span><span class="pun">(</span><span class="pln"> </span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">

   </span><span class="kwd">struct</span><span class="pln"> </span><span class="typ">Books</span><span class="pln"> </span><span class="typ">Book1</span><span class="pun">;</span><span class="pln">        </span><span class="com">/* Declare Book1 of type Book */</span><span class="pln">
   </span><span class="kwd">struct</span><span class="pln"> </span><span class="typ">Books</span><span class="pln"> </span><span class="typ">Book2</span><span class="pun">;</span><span class="pln">        </span><span class="com">/* Declare Book2 of type Book */</span><span class="pln">
 
   </span><span class="com">/* book 1 specification */</span><span class="pln">
   strcpy</span><span class="pun">(</span><span class="pln"> </span><span class="typ">Book1</span><span class="pun">.</span><span class="pln">title</span><span class="pun">,</span><span class="pln"> </span><span class="str">"C Programming"</span><span class="pun">);</span><span class="pln">
   strcpy</span><span class="pun">(</span><span class="pln"> </span><span class="typ">Book1</span><span class="pun">.</span><span class="pln">author</span><span class="pun">,</span><span class="pln"> </span><span class="str">"Rambo Azmi"</span><span class="pun">);</span><span class="pln"> 
   strcpy</span><span class="pun">(</span><span class="pln"> </span><span class="typ">Book1</span><span class="pun">.</span><span class="pln">subject</span><span class="pun">,</span><span class="pln"> </span><span class="str">"C Programming Tutorial"</span><span class="pun">);</span><span class="pln">
   </span><span class="typ">Book1</span><span class="pun">.</span><span class="pln">book_id </span><span class="pun">=</span><span class="pln"> </span><span class="lit">6495407</span><span class="pun">;</span><span class="pln">

   </span><span class="com">/* book 2 specification */</span><span class="pln">
   strcpy</span><span class="pun">(</span><span class="pln"> </span><span class="typ">Book2</span><span class="pun">.</span><span class="pln">title</span><span class="pun">,</span><span class="pln"> </span><span class="str">"Telecom Billing"</span><span class="pun">);</span><span class="pln">
   strcpy</span><span class="pun">(</span><span class="pln"> </span><span class="typ">Book2</span><span class="pun">.</span><span class="pln">author</span><span class="pun">,</span><span class="pln"> </span><span class="str">"Snowfish"</span><span class="pun">);</span><span class="pln">
   strcpy</span><span class="pun">(</span><span class="pln"> </span><span class="typ">Book2</span><span class="pun">.</span><span class="pln">subject</span><span class="pun">,</span><span class="pln"> </span><span class="str">"Telecom Billing Tutorial"</span><span class="pun">);</span><span class="pln">
   </span><span class="typ">Book2</span><span class="pun">.</span><span class="pln">book_id </span><span class="pun">=</span><span class="pln"> </span><span class="lit">6495700</span><span class="pun">;</span><span class="pln">
 
   </span><span class="com">/* print Book1 info */</span><span class="pln">
   printf</span><span class="pun">(</span><span class="pln"> </span><span class="str">"Book 1 title : %s\n"</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Book1</span><span class="pun">.</span><span class="pln">title</span><span class="pun">);</span><span class="pln">
   printf</span><span class="pun">(</span><span class="pln"> </span><span class="str">"Book 1 author : %s\n"</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Book1</span><span class="pun">.</span><span class="pln">author</span><span class="pun">);</span><span class="pln">
   printf</span><span class="pun">(</span><span class="pln"> </span><span class="str">"Book 1 subject : %s\n"</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Book1</span><span class="pun">.</span><span class="pln">subject</span><span class="pun">);</span><span class="pln">
   printf</span><span class="pun">(</span><span class="pln"> </span><span class="str">"Book 1 book_id : %d\n"</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Book1</span><span class="pun">.</span><span class="pln">book_id</span><span class="pun">);</span><span class="pln">

   </span><span class="com">/* print Book2 info */</span><span class="pln">
   printf</span><span class="pun">(</span><span class="pln"> </span><span class="str">"Book 2 title : %s\n"</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Book2</span><span class="pun">.</span><span class="pln">title</span><span class="pun">);</span><span class="pln">
   printf</span><span class="pun">(</span><span class="pln"> </span><span class="str">"Book 2 author : %s\n"</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Book2</span><span class="pun">.</span><span class="pln">author</span><span class="pun">);</span><span class="pln">
   printf</span><span class="pun">(</span><span class="pln"> </span><span class="str">"Book 2 subject : %s\n"</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Book2</span><span class="pun">.</span><span class="pln">subject</span><span class="pun">);</span><span class="pln">
   printf</span><span class="pun">(</span><span class="pln"> </span><span class="str">"Book 2 book_id : %d\n"</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Book2</span><span class="pun">.</span><span class="pln">book_id</span><span class="pun">);</span><span class="pln">

   </span><span class="kwd">return</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln"> 
</span>

Output

Book 1 title : C Programming
Book 1 author : Rambo Azmi
Book 1 subject : C Programming Tutorial
Book 1 book_id : 6495407
Book 2 title : Telecom Billing
Book 2 author : Snowfish
Book 2 subject : Telecom Billing Tutorial
Book 2 book_id : 6495700
Press any key to continue . . .


Stay Ahead of the Curve! Check out these trending topics and sharpen your skills.