Structures for cs xi_2011_jan

Views:
 
Category: Education
     
 

Presentation Description

No description available.

Comments

Presentation Transcript

C++ Structures Start thinking about an objects... : 

Structures 1 C++ Structures Start thinking about an objects... Jitendra Sharma PGT CS, KVCRPF, Yelahanka, Bangalore

Structure : 

Structures 2 Structure A Structure is a container, it can hold a bunch of things. These things can be of any type. Structures are used to organize related data (variables) in to a nice neat package.

Transparent Bag (a complete unit) : 

Structures 3 Transparent Bag (a complete unit)

Example - Student Record : 

Structures 4 Example - Student Record Student Record: Name a string HW Grades an array of 3 doubles Test Grades an array of 2 doubles Final Average a double

Structure Members : 

Structures 5 Structure Members Each thing in a structure is called member. Each member has a name, a type and a value. Names follow the rules for variable names. Types can be any defined type.

Example Structure Definition : 

Structures 6 Example Structure Definition struct StudentRecord { char *name; // student name double hw[3]; // homework grades double test[2]; // test grades double ave; // final average };

The elements of a structure are arranged in the MEMORY in the same order as they are defined in the struct definition. : 

Structures 7 The elements of a structure are arranged in the MEMORY in the same order as they are defined in the struct definition.

Using a struct : 

Structures 8 Using a struct By defining a structure you create a new data type. Once a struct is defined, you can create variables of the new type. StudentRecord stu; One Object of student Record

Accessing Members : 

Structures 9 Accessing Members You can treat the members of a struct just like variables. You need to use the member access operator '.' (pronounced "dot"): cout << stu.name << endl; stu.hw[2] = 82.3; stu.ave = total/100;

Structure Assignment : 

Structures 10 Structure Assignment You can use structures just like variables: StudentRecord s1,s2; s1.name = "Joe Student"; or Cin>>s1.name; s2 = s1; Copies the entire structure

Be Careful : 

Structures 11 Be Careful If a member is a pointer, copying means copying the pointer (not what is pointed to). name ave test hw "Joe Student"

Probably not what you want : 

Structures 12 Probably not what you want StudentRecord s1,s2; s1.name = "Joe Student"; … s2 = s1; s2.name = "Jane Doe"; // now s1.name and s2.name are both // "Jane Doe"

Pointers to Structures : 

Structures 13 Pointers to Structures Pointers to structures are used often. There is another member access operator used with pointers: -> StudentRecord *sptr; Cin>>sptr->name>>sptr->ave; cout << "Name is" << sptr->name; cout << "Ave is " << sptr->ave; it looks like a "pointer"!

Sample Function (won't work!) : 

Structures 14 Sample Function (won't work!) void update_average( StudentRecord stu) { double tot=0; for (int i=0;i<3;i++) tot + = stu.hw[i]; for (int i=0;i<3;i++) tot + = stu.test[i]; stu.ave = tot/5; }

This one works : 

Structures 15 This one works void update_average( StudentRecord *stu) { double tot=0; for (int i=0;i<3;i++) tot + = stu->hw[i]; for (int i=0;i<3;i++) tot + = stu->test[i]; stu->ave = tot/5; }

Or use a reference parameter : 

Structures 16 Or use a reference parameter void update_average( StudentRecord &stu) { double tot=0; for (int i=0;i<3;i++) tot += stu.hw[i]; for (int i=0;i<3;i++) tot += stu.test[i]; stu.ave = tot/5; }

Other stuff you can do with a struct : 

Structures 17 Other stuff you can do with a struct You can also associate special functions with a structure (called member functions). A C++ class is very similar to a structure, we will focus on classes. Classes can have (data) members Classes can have member functions. Classes can also hide some of the members (functions and data).

Quick Example : 

Structures 18 Quick Example struct StudentRecord { char *name; // student name double hw[3]; // homework grades double test[2]; // test grades double ave; // final average void print_ave() { cout << "Name: " << name << endl; cout << "Average: " << ave << endl; } };

Using the member function : 

Structures 19 Using the member function doubleStudentRecord stu; … // set values in the structure stu.print_ave();

Next to follow : 

Structures 20 Next to follow Array of structures