14575 structure

Upload: serra-asreen

Post on 05-Apr-2018

220 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/31/2019 14575 Structure

    1/31

    Structure

    A Structure is a Group of data items of

    different data types held together in a single

    unit.

  • 7/31/2019 14575 Structure

    2/31

    Declaring a Structure

    struct sname

    {

    type var1;

    type var2;

    type var3;

    .

    .

    type varN;

    };

    struct is a keyword to define a structure.

    sname is the name given to the structure data type.

    type is a built-in data type.

    var1,var2,var3,..,varNare elements of structure

    being defined.

    Structure template

    sname is called tag makes it possible to declare other

    variable of the same structure type without having to

    rewrite the template itself. Its a type name.tag is

    optional.

  • 7/31/2019 14575 Structure

    3/31

    Eg to store information of an employee, our structure

    declaration may look like as shown overleaf

    struct employee_type

    {

    int code;

    char name[20];

    int dept_code;

    float salary;

    };

    No variable has been associated with this structure

    No memory is set aside for this structure.

  • 7/31/2019 14575 Structure

    4/31

    Declaring Variables of the Structure Type

    Declares a variable employee of type employee_type

    At this point, the memory is set asidefor the structure variable

    employee.

    We can also declare variable(s) of structure type alongwith the structure declaration.

    struct employee_type employee;

    struct employee_type

    {

    int code;

    char name[20];

    int dept_code;

    float salary;

    }employee

  • 7/31/2019 14575 Structure

    5/31

    Consider the declarations to understand how the elements

    of the structure variables are stored in memory

    struct example_type

    {

    char var1;

    int var2;

    float var3;

    double var4;

    };

    struct example_type sample1;

    Note: all members are stored in contiguous memory location in order in which they aredeclared.

  • 7/31/2019 14575 Structure

    6/31

    How the elements of the structure variables are

    stored in memory

    11971198

    1199

    1200

    1201

    1202

    1203

    1204

    1205

    1206

    1207

    1208

    1209

    1210

    1211

    var 1

    var 2

    var 4

    var 3

  • 7/31/2019 14575 Structure

    7/31

    Intializing Structures

    struct student_type

    {

    int rollno;char name[25];

    int age;

    float height;};

    struct student_type student=1000,Surbhi salaria,18,5.6-;

  • 7/31/2019 14575 Structure

    8/31

    Accessing Structure Elements

    Elements are accessed using dot operator.

    It provides a powerful and clear way to refer to an

    individual element.

    Syntax: sname.vname

    sname is structure variable name.

    vname is name of the element of the structure.Eg: the element of the structure variable student

    can be accessed as

    student.rollno,student.name,student.age,student.height

  • 7/31/2019 14575 Structure

    9/31

    WAP to display size of structure elements.Use sizeof() of operator.

    main()

    {struct book1

    {

    char book[30];

    int pages;float price;

    };

    struct book1 bk1;

    clrscr();

    printf(\nSize of Structure elements\n);

    printf(\nBook: %d,sizeof(bk1.book));

    printf(\nPages: %d,sizeof(bk1.pages));

    printf(\nBook:%d,sizeof(bk1.price));

    printf(\nBook:%d,sizeof(bk1));

    Output

    Book : 30Pages:2

    Price:4

    Total Bytes:36

  • 7/31/2019 14575 Structure

    10/31

    Entering Data into Structuresstruct employee_type

    {

    int code;

    char name[25];

    char dept[15];

    float salary;

    };

    main()

    {

    struct employee_type employee;

    printf(\nEnter employee code:\n);

    scanf(%d,&code);

    printf(\nEnter name:\n);

    gets(employee.name);

    printf(\nEnter employees dept:\n);

    gets(employee.dept);

    printf(\nEnter employees salary:\n);

    scanf(%f,&employee.salary);

    continue

    printf(\n\nParticulars of emp as entered by user\n);

    printf(\nEmployees code:%d,employee.code);

    printf(\nEmployees name:%s, employee.name);

    printf(\nEmployees dept:%s,employee.dept);

    Printf(\nEmployees sal:%f,employee.salary);

    continue

  • 7/31/2019 14575 Structure

    11/31

    Use of Assignment Statement for Structures

    Value of one structure variable can be assigned toanother variable of the same type using simple

    assignment statement.if student1 and student2

    are structure variable of type student_type,thenstudent2=student1;

    Assigns value of structure variable student1 to

    student2

    Simple assignment cannot be used this way for

    arrays.

  • 7/31/2019 14575 Structure

    12/31

    WAP to copy structure elements from one object to another object

    void main()

    {

    struct disk

    {

    char co[15];

    float type;

    int price;};

    struct disk d1=SONY,1.44,20-;

    struct disk d2,d3;

    strcpy(d2.co,d1.co); individual elements of d1 object are copied using

    d2.type=d1.type; assignment statement

    d2.price=d1.price;

    d3=d2; // all the contents are copied to d3

    clrscr();

    continue

    continue

    printf(\n %s %g %d,d1.co,d1.type,d1.price);

    printf(\n %s %g %d,d2.co,d2.type,d2.price);

    printf(\n %s % %d,d3.co,d3.type,d3.price);

    }

  • 7/31/2019 14575 Structure

    13/31

    Pointers and Structures

    struct student_type student,*ptrIt declares a structures variable studentand a pointer variable ptrtostructure of type student_type.

    ptr can be initialized with the following assignment statement

    ptr=&student;HOW WE CAN ACCESS THE ELEMENTS OF STRUCTURE?

    But this approach will not workbecause dot has higher priority

    Correctly way to write is:

    or

    *ptr.rollno,*ptr.name,*ptr.age,*ptr.height

    (*ptr).rollno,(*ptr).name,(*ptr).age,(*ptr).height

    ptr->rollno,ptr->name,ptr->age,ptr->height

  • 7/31/2019 14575 Structure

    14/31

    Structure within Structure

    We can take object of one structure as member in another structure.

    Structure within structure can be used to create complex data applications.

    Syntax: struct time

    {

    int second;

    int time;

    int hour;

    }

    struct t

    {

    int carno;

    struct time st;

    struct time et;

    };

    struct t player;

  • 7/31/2019 14575 Structure

    15/31

    main()

    {

    struct time

    {

    int second;

    int minute;

    int hour;

    }

    struct t

    {

    int carno;

    struct time st;

    struct time rt;

    };

    struct tr1;

    clrscr();

    scanf(%d,&r1.carno);scanf(%d %d %d,&r1.st.hour,&r1.st.minute,&r1.st.second);

    scanf(%d %d %d,&r1.rt.hour,&r1.rt.minute,&r1.rt.second);

    printf(\n \tCArno \n\tStarting time \n\t Reaching time\n);

    printf(\t%d\t,r1.carno);

    printf(\t%d:%d:%d\t\t,r1.st.hour,ri.st.minute,r1.st.second);printf(\t%d:%d:%d\t\t,r1.rt.hour,ri.rt.minute,r1.rt.second);

  • 7/31/2019 14575 Structure

    16/31

    Array of Structures

    If we wish to process a list of values of structuretype,then we need an array of such structures.

  • 7/31/2019 14575 Structure

    17/31

    Declaring an Array of Structures

    struct employee_type

    {

    int code;

    char name[25];char dept[15];

    float salary;

    };struct employee_type employee[50];

  • 7/31/2019 14575 Structure

    18/31

    Accessing elements an array of structures

    Individual elements of a structure in an array ofstructure are accessed by referring to

    structure variable name.

    1. Followed by subscript.

    2. Followed by dot operator.

    3. Ending with structure element desired.

    Suppose we want to access salary of 7th

    employee,we can do so by writing

    employee[6].salary

  • 7/31/2019 14575 Structure

    19/31

    WAP to create an array of structure objects

    main()

    {

    int k;struct time

    {

    int second;

    int minute;

    int hour;};

    struct tt

    {

    int carno;

    struct time st;

    struct time rt;

    };

    struct tt r1[3];

    clrscr();

    printf(\n Carno Starting time Reaching time);

    for(k=0;k

  • 7/31/2019 14575 Structure

    20/31

    Structure and Function

    The relationship of structure with the function

    can be viewed from three angles:-1. Passing Structures to a function.

    2. Function Returning Structure.3. Passing array of Structures to Function.

    Note:When a structure element is to be passed to any other

    function,it is essential to declare the structure outside the

    main() functioni.e global

  • 7/31/2019 14575 Structure

    21/31

  • 7/31/2019 14575 Structure

    22/31

    Read and display student grade by

    using structure with functionstruct student

    {

    int rn;

    char name[20];

    char grade;}s;

    main()

    {

    printf(\nEnter rollno,name and grade of student:\n);

    scanf(%d %s %c,&s.rn,s.name,&s.grade);

    display(s);

    getche();

    }

    display(m)struct student m;

    {

    printf(\nRollno is %d,m.rn);

    printf(\n Name is %s,m.name);

    printf(\n Grade is: %c,m.grade);

    grade;

    }

  • 7/31/2019 14575 Structure

    23/31

    Passing of structure variables by value to a function

    struct date

    {int day;

    int month;

    int year;

    };

    void print_date(struct date);

    void main()

    {

    struct date d={10,12,1997};

    print_date(d);

    }

    void print_date(struct date a)

    {rintf nDate in format %d %d %d a.da a.month a. ear

  • 7/31/2019 14575 Structure

    24/31

    Passing to the function by address

    struct book{

    char name[35];

    char author[35];

    int pages;

    }b1;

    void main()

    {

    ---------

    ---------

    show(&b1);

    }

    show(struct book *b2)

    {

    -------------------------------------

    }

  • 7/31/2019 14575 Structure

    25/31

    Prog to pass address of structure variable to user defined function and

    display the contents

    struct book

    {char name[35];

    char author[35];

    char author[35];

    int pages;

    }void main()

    {

    struct book b1=JAVA COMPETE REFERENCE,P.NAUGHTON,886-;

    show(&b1);

    }show(struct book *b2) pointer to structure

    {

    clrscr();

    printf(%s %s %d,b2->name,b2->author,b2->pages);

    }

  • 7/31/2019 14575 Structure

    26/31

    Passing of structure variables by reference to a function

    struct date

    {

    int day;

    int month;

    int year;

    };

    main(){

    struct date d;

    void get_date(struct date *);

    printf(Enter date in the format:\n);

    get_date(&d);

    printf(\nDate entered by you %d %d %d,d.day,d.month,d.year);

    }

    void get_date(struct date *a)

    { scanf(%d %d %d,&a->day,&a->month,a->year);

    l f () d h

  • 7/31/2019 14575 Structure

    27/31

    Wap to pass structure elements to function print() and print the

    elements

    void main()

    {struct boy

    {

    char name[25];

    int age;

    int wt;

    };

    struct boy b1=Amit,20,25-;

    print(b1.name,b1.age,b1.wt);

    }print(char *s,int t, int n)

    {

    printf(\n%s %d %d,s,t,n);

    return 0;

    }

    Note:

    We have passed base address of nameBut values ofage and wt.

    Here values are passed using call by reference and call by

    value

  • 7/31/2019 14575 Structure

    28/31

    Function Returning Structure

    struct date

    {

    int day;

    int month;

    int year;};

    main()

    {

    struct date d;

    struct date get_date(void);

    printf(\nEnter date in format day/month/year);

    d=get_date();

    printf(\nDAte entered by you is %d %d %d\n,d.day,d.month,d.year);

    }

    struct date get_date(void)

    {

    struct date a;

    scanf(%d %d %d,&a.day,&a.month,&a.year);

    return a;

    }

  • 7/31/2019 14575 Structure

    29/31

    Union

    Union:

    Union is similar as structure. The major distinction between them interms of storage.

    In structure each member has its own storage location whereas all

    the members ofunion uses the same location.

    The union may contain many members of different data type it can

    handle only one member at a time union can be declared using the

    keyword union.

    Hold only one object at a time

    Union requires bytes that are equal to the number of bytes requiredfor the largest members.

    Eg: union contains char,int &long then the number of bytes reservedin the member for the union is 4 bytes.

  • 7/31/2019 14575 Structure

    30/31

    Union item

    {

    int m;

    float x;char c;

    } code;

    This declare a variable code of type union item.

  • 7/31/2019 14575 Structure

    31/31

    outputmain()

    {

    union result

    {

    int marks;

    char grade;

    };struct res

    {

    char name[15];

    int age;

    union result perf;

    }data;

    printf(Size of union:%d,sizeof(data.perf));

    printf(Size of structure:%d,sizeof(data));

    }

    Output:

    Size of union: 2

    Size of structure: 19