CSC COMPUTER EDUCATION, M.K.B.NAGAR SessionObjectives Session Objectives Define Structure Create Structure variable Access structure member using . operator Array of Structures, passing structure to functions Nested Structures
3.
CSC COMPUTER EDUCATION, M.K.B.NAGAR Structureare collection of different datatype grouped together under a single variable name for convienient handling. 'struct' is a keyword, struct type is a name which identifies the structure. syntax : struct <structure name or tagname> { datatype member1; datatype member2; }; struct book { int pages; char bookname[10]; char author[20]; float price; };
CSC COMPUTER EDUCATION, M.K.B.NAGAR Individualstructure type variables can be declared as follows: Syntax : struct structurename variable1, variable2, ..... variable n; Example Struct book b1; /* b1 is a structure variable name */ Member variables can be accessed using the dot or period operator as follows: Syntax : Stru_variablename.membername; Example B1.pages=400; B1.price=450.00;
6.
CSC COMPUTER EDUCATION, M.K.B.NAGAR Writea Program the create the Account Details using Structure? #include<stdio.h> struct amount { int ac_no; char name[10]; int balance; }; void main() { struct amount v; printf("nEnter the account Details"); scanf("%d%s%d",&v.ac_no,&v.name, &v.balance); printf("The values are %d%s%d",v.ac_no, v.name, v.balance); printf("%d",sizeof(struct amount)); }
7.
CSC COMPUTER EDUCATION, M.K.B.NAGAR Writea program to create student structure #include<stdio.h> struct stud { int id; char name[20]; int mark1,mark2,mark3; int total; int avg; }b; void main() { printf("nEnter the student details"); scanf("%d %s %d %d %d",&b.id,&b.name, &b.mark1,&b.mark2,&b.mark3); b.total=b.mark1+b.mark2+b.mark3; b.avg=b.total/3; printf("%d %s %d %d %d",b.id,b.name, b.mark1, b.mark2, b.mark3); }
8.
CSC COMPUTER EDUCATION, M.K.B.NAGAR InitializingStructures Like variables and arrays, structure variables can be initialized at the beginning of the program. Consider the following program : The variable emp1 and emp2 of the type employee can be initialized when it is declared as
9.
CSC COMPUTER EDUCATION, M.K.B.NAGAR Arrayof structures are defined as a group of data of different data types stored in a consecutive memory location with a common variable name. For Example, struct employee { int empno; char empname[20]; char deptname[10]; float salary; }emp[5];
10.
CSC COMPUTER EDUCATION, M.K.B.NAGAR PassingStructures as Arguments A structure variable can be passed as an argument to another function This is a useful facility and it is used to pass groups of logically related data items together instead of passing them one by one.
11.
CSC COMPUTER EDUCATION, M.K.B.NAGAR /*PASSINGSTRUCTURES TO FUNCTION ARGUMENTS*/ #include<stdio.h> struct record { char *name; int acct_no; char acct_type; float bal; }; struct record fun(struct record); void main(){ struct record c; printf("n Enter Details"); scanf("%s%d%c%f",c.name,&c.acct_no, &c.acct_type, &c.bal); c=fun(c); //calling printf("n%s %d %c %f",c.name,c.acct_no,c.acct_type,c.bal); }
CSC COMPUTER EDUCATION, M.K.B.NAGAR Passingthe structure member as a parameter to the function #include<stdio.h> #include<stdlib.h> typedef struct stud { int roll_no; char name[20]; float marks; }student; student st; void print_rec(int,char [],float); void main() { char ans; clrscr(); do { printf("n t Enter the record"); printf("n Enter the Roll Number"); scanf("%d",&st.roll_no); printf("n Enter the Name"); scanf("%s",st.name); printf("n Enter the Marks"); scanf("%f",&st.marks); print_rec(st.roll_no,st.name,st.marks); printf("n Do U Want to store the More record "); ans=getche(); }while(ans=='y'); } void print_rec(int r,char n[],float m) { printf("n You have Entered Following record"); printf("n %d %s %f",r,n,m); }
14.
CSC COMPUTER EDUCATION, M.K.B.NAGAR NestedStructure A structure within another structure is called Nesting of structures.The declaration of the embedded structure must appear before the declaration of the outer structure. Example Struct date { int month; int day; int year; }; struct account { int acc_no; char name[40]; char acc_type; float balance; struct date dob; } customer;
15.
CSC COMPUTER EDUCATION, M.K.B.NAGAR /*NESTED STRUCTURES A structure within another structure */ #include<stdio.h> struct dob { int date; int month; int year; }; struct stud{ int sno; char sname[10]; struct dob sdob; char sex; }; void main() { struct stud s; clrscr(); printf("enter the snon"); scanf("%d",&s.sno); printf("enter the snamen"); scanf("%s",s.sname); printf("enter the dobn"); scanf("%d%d%d %c",&s.sdob.date, &s.sdob.month,&s.sdob.year,&s.sex); printf("%dt %st %d %d %d t %c", s.sno, s.sname, s.sdob.date, s.sdob.month, s.sdob.year, s.sex); getch(); }
16.
CSC COMPUTER EDUCATION, M.K.B.NAGAR SessionSummary The keyword “struct” begins the structure definition followed by the tag(i.e strcture name) within the braces the structure members are declared The structure definition create a new data type that can be used to declare variables. A member of structure is always referred and accessed using the member access operator(.) via the structure variable name A structure containing a member that is a pointer to the same structure type is called as a self referential structure. The structure pointer operator () is used when accessing a member of a structure via a pointer to the structure
17.
CSC COMPUTER EDUCATION, M.K.B.NAGAR EXERCISES 1.Define a structure in C that contains the following: a. An integer quantity called “Won” b. An integer quantity called “Lost” c. A floating quantity called “Lost” d. An array of characters to hold the name Include the user defined data type record within the definition? 2. Define a structure called student that will describe the following information student name,class,rollno, subject marks & total. Using student declare an array stu_list with 30 elements. Write program in C to read the information about all the 30 students and to display the information?