what is Structure?

Structure is a user-defined datatype that allows you to hold different type of elements. Each element of a structure is called a member.

For example: If I have to write a program to store Student information, which will have Student's name, age, branch, permanent address, father's name etc, which included string values, integer values etc, how can I use arrays for this problem, I will require something which can hold data of different types together.
In structure, data is stored in form of records.

Defining a structure :-

To define a structure, you use the struct keyword.
struct struct_name{ structure_member };

struct address{
unsigned int house_number;
char street_name[50];
int zip_code;
char country[50];
};

The address structure contains house_number as an unsigned int, street_name as a string, zip_code as an int and country as a string.

Example :-

struct Student
{
char name[25];
int age;
char branch[10];
// F for female and M for male
char gender;
};

Here struct is the keyword, Student is the tag name of structure. Student declares a structure to hold the details of a student which consists of 4 data fields, namely name, age, branch and gender. These fields are called structure elements or members.
Each member can have different datatype, like in this case, name is an array of char type and age is of int type etc. Student is the name of the structure and is called as the structure tag.


Declaring Structure variables separately :-

It is possible to declare variables of a structure, either along with structure definition or after the structure is defined. Structure variable declaration is similar to the declaration of any normal variable of any other datatype.
struct Student
{
char name[25];
int age;
char branch[10];
char gender;
};
struct Student S1, S2; //declaring variables of struct Student

Declaring Structure variables with structure definition :-

struct Student
{
char name[25];
int age;
char branch[10];
char gender;
}S1, S2;

Here S1 and S2 are variables of structure Student.

Declaring structure variable :-

There are two ways to declare structure variable:
  • By struct keyword within main() function
  • By declaring variable at the time of defining structure.

  • 1st way: :-

    struct employee
    { int id;
    char name[50];
    float salary;
    };
    Now write given code inside the main() function.
    struct employee e1, e2;

    2nd way: :-

    struct employee
    { int id;
    char name[50];
    float salary;
    }e1,e2;

    Which approach is good :-

    if no. of variable are not fixed, use 1st approach. It provides you flexibility to declare the structure variable many times.
    If no. of variables are fixed, use 2nd approach. It saves your code to declare variable in main() fuction.

    Accessing members of structure :-

    There are two ways to access structure members:
  • By . (member or dot operator)
  • By -> (structure pointer operator)

  • Example :-

    #include<stdio.h>
    #include<string.h>
    struct Student
    {
    char name[25];
    int age;
    char branch[10];
    //F for female and M for male
    char gender;
    };
    int main()
    {
    struct Student s1;
    /* s1 is a variable of Student type and
    age is a member of Student
    */
    s1.age = 18;
    /* using string function to add name
    */ strcpy(s1.name, "Viraaj");
    /* displaying the stored values
    */ printf("Name of Student 1: %s\n", s1.name);
    printf("Age of Student 1: %d\n", s1.age);
    return 0;
    }

    Output :-

    Name of Student 1: Viraaj
    Age of Student 1: 18

    #include<stdio.h>
    #include<string.h>
    struct employee
    { int id;

    }e1; //declaring e1 variable for structure int main( )
    {
    //store first employee information
    e1.id=101;
    strcpy(e1.name, "Sonoo Jaiswal");//copying string into char array
    //printing first employee information
    printf( "employee 1 id : %d\n", e1.id);
    printf( "employee 1 name : %s\n", e1.name);
    return 0;
    }

    Output :-

    employee 1 id : 101
    employee 1 name : itechtuto

    #include<stdio.h>
    #include<string.h>
    struct employee
    { int id;
    char name[50];
    float salary;
    }e1,e2; //declaring e1 and e2 variables for structure
    int main( )
    { //store first employee information
    e1.id=101;
    strcpy(e1.name, "itechtuto");//copying string into char array
    e1.salary=56000;
    //store second employee information
    e2.id=102;
    strcpy(e2.name, "itechxpert");
    e2.salary=126000;
    //printing first employee information
    printf( "employee 1 id : %d\n", e1.id);
    printf( "employee 1 name : %s\n", e1.name);
    printf( "employee 1 salary : %f\n", e1.salary);
    //printing second employee information
    printf( "employee 2 id : %d\n", e2.id);
    printf( "employee 2 name : %s\n", e2.name);
    printf( "employee 2 salary : %f\n", e2.salary);
    return 0;
    }

    Output :-

    employee 1 id : 101
    employee 1 name : itechtuto
    employee 1 salary : 56000.000000
    employee 2 id : 102
    employee 2 name : itechxpert
    employee 2 salary : 126000.000000


    Array of Structure :-

    We can also declare an array of structure variables. in which each element of the array will represent a structure variable. Example : struct employee emp[5];
    ? The below program defines an array emp of size 5. Each element of the array emp is of type Employee.
    The array of structures is also known as collection of structures.

    #include<stdio.h>
    #include<string.h>
    struct student{
    int rollno;
    char name[10];
    };
    int main(){
    int i;
    struct student st[5];
    printf("Enter Records of 5 students");
    for(i=0;i<5;i++){
    printf("\nEnter Rollno:");
    scanf("%d",&st[i].rollno);
    printf("\nEnter Name:");
    scanf("%s",&st[i].name);
    }
    printf("\nStudent Information List:");
    for(i=0;i<5;i++){
    printf("\nRollno:%d, Name:%s",st[i].rollno,st[i].name);
    }
    return 0;
    }

    Output :-

    Enter Records of 5 students
    Enter Rollno:1
    Enter Name:itech
    Enter Rollno:2
    Enter Name:Ratan
    Enter Rollno:3
    Enter Name:Vimal
    Enter Rollno:4
    Enter Name:James
    Enter Rollno:5
    Enter Name:Sarfraz
    Student Information List:
    Rollno:1, Name:itech
    Rollno:2, Name:Ratan
    Rollno:3, Name:Vimal
    Rollno:4, Name:James
    Rollno:5, Name:Sarfraz

    #include<stdio.h>
    #include<string.h>
    struct Employee
    {
    char ename[10];
    int sal;
    };
    struct Employee emp[5];
    int i, j;
    void ask()
    {
    for(i = 0; i < 3; i++)
    {
    printf("\nEnter %dst Employee record:\n", i+1);
    printf("\nEmployee name:\t");
    scanf("%s", emp[i].ename);
    printf("\nEnter Salary:\t");
    scanf("%d", &emp[i].sal);
    }
    printf("\nDisplaying Employee record:\n");
    for(i = 0; i < 3; i++)
    {
    printf("\nEmployee name is %s", emp[i].ename);
    printf("\nSlary is %d", emp[i].sal);
    }
    }
    void main()
    {
    ask();
    }

    Nested Structure in C :-

    There are two ways to define nested structure in c language:
  • By separate structure
  • By Embedded structure

  • Separate structure :-

    struct Date
    {
    int dd;
    int mm;
    int yyyy;
    };
    struct Employee
    {
    int id;
    char name[20];
    struct Date doj;
    }emp1;


    As you can see, doj (date of joining) is the variable of type Date. Here doj is used as a member in Employee structure. In this way, we can use Date structure in many structures.

    Embedded structure :-

    We can define structure within the structure also. It requires less code than previous way. But it can't be used in many structures.

    struct Employee
    {
    int id;
    char name[20];
    struct Date
    {
    int dd;
    int mm;
    int yyyy;
    }doj;
    }emp1;

    #include<stdio.h>
    #include<string.h>
    struct Employee
    {
    int id;
    char name[20];
    struct Date
    {
    int dd;
    int mm;
    int yyyy;
    }doj;
    }e1;
    int main( )
    {
    //storing employee information
    e1.id=101;
    strcpy(e1.name, "Sonoo Jaiswal");//copying string into char array
    e1.doj.dd=10;
    e1.doj.mm=11;
    e1.doj.yyyy=2014;
    //printing first employee information
    printf( "employee id : %d\n", e1.id);
    printf( "employee name : %s\n", e1.name);
    printf( "employee date of joining (dd/mm/yyyy) : %d/%d/%d\n", e1.doj.dd,e1.doj.mm,e1.doj.yyyy);
    return 0;
    }

    #include<stdio.h>
    #include<string.h>
    struct Student
    {
    char name[10];
    int roll;
    };
    void show(struct Student st);
    void main()
    {
    struct Student std;
    printf("\nEnter Student record:\n");
    printf("\nStudent name:\t");
    scanf("%s", std.name);
    printf("\nEnter Student rollno.:\t");
    scanf("%d", &std.roll);
    show(std);
    }
    void show(struct Student st)
    {
    printf("\nstudent name is %s", st.name);
    printf("\nroll is %d", st.roll);
    }





    Previous Next

    Trending Tutorials




    Review & Rating

    0.0 / 5

    0 Review

    5
    (0)

    4
    (0)

    3
    (0)

    2
    (0)

    1
    (0)

    Write Review Here


    Ittutorial