21
STRUCTURES

STRUCTURES

  • Upload
    jesus

  • View
    15

  • Download
    0

Embed Size (px)

DESCRIPTION

STRUCTURES. Structures in C. A structure is a convenient way of grouping several pieces of related information together a collection of variables under a single name Example s : real number && imaginary number  complex number ( 3+5i ) - PowerPoint PPT Presentation

Citation preview

Page 1: STRUCTURES

STRUCTURES

Page 2: STRUCTURES

Structures in C

• A structure is – a convenient way of grouping several

pieces of related information together– a collection of variables under a single

name

Examples :

real number && imaginary number complex number ( 3+5i )

height && width && length rectangular prism

Page 3: STRUCTURES

Structures in C

• The variables in structures can be of different types, and each has a name which is used to select it from the structure

Example : ID (integer) && Name (char array) A Student record

• A structure is a new named type that may involve several different typed variables

Page 4: STRUCTURES

Defining Structures 1

struct complex_number{

int real_part;int imaginary_part;

};

“complex_number”

is the tag name

“struct complex_number” is the new type

Page 5: STRUCTURES

Defining Structures 2/* DEFINITION OF RECTANGULAR

PRISM */struct rectangular_prism{ int height;

int width;int length;};

// name of new type??

/* DEFINITION OF STUDENT RECORD */

struct student_record{ int ID;

char name[100]; };

Page 6: STRUCTURES

Structures : Creating objects

struct complex_number{

int real_part;int imaginary_part; };

// Below the definition of structure you can create// objects from it “s1” and “s2”

struct complex_number s1;

struct complex_number s2;s2

real_part imaginary_part

s1

real_part imaginary_part

Page 7: STRUCTURES

Structures : Creating objects

struct rectangular_prism{ int height;

int width;int length; };

// Below the definition of structure you can create

// objects from it “obj”

struct rectangular_prism obj; obj

height lengthwidth

Page 8: STRUCTURES

Structures : Creating static

arrays of objects struct student_record{ int ID;

char name[100]; };

// Creates an array of student records “group”

struct student_record group[4];group

ID name

ID name

ID name

ID name

group[0]

group[1]

group[2]

group[3]

Page 9: STRUCTURES

Structures : Creating dynamic arrays of objects

struct rec{ int ID;

char name[100]; };

// Creating a dynamic array // of student records “group”

struct rec * group; // DECLARES POINTER

group = ( struct rec * ) malloc ( sizeof (struct rec) * 4 );

size ofobjects in

array

number of objects in

array(array size)

Page 10: STRUCTURES

Structures : Accessing members of

structures struct rectangular_prism{ int height;

int width;int length; };

// Create an object from the structure defined above “obj”

struct rectangular_prism obj;

// Members of the objects can be accessed by putting a dot

// following the object name

obj.height=10;obj.width=15;obj.length=40;

obj

height=10

length=40

width=15

Page 11: STRUCTURES

Structures : Accessing members of

structures struct rectangular_prism{ int height;

int width;int length; };

struct rectangular_prism obj;

// Create a pointer to point object “obj”struct rectangular_prism *p = &obj;

(*p).height=10 // or obj.height or p->height=10

p->width=15;p->length=40;

obj == *p

height=10

length=40

width=15

Page 12: STRUCTURES

Structures : Accessing members of structures

// Defines structurestruct student_record{ int ID; char

name[100]; };

// Creates an array of student records “group”

struct student_record group[2];

group[0].ID=200710;strcpy(group[0].name, “doddy”);

group[1].ID=200711;strcpy(group[1].name,group[0].name);

group

ID=200710

name= “doddy”

ID=200711

name =??

group[0]

group[1]

Page 13: STRUCTURES

Structures : DECLARATION ALTERNATIVES

Declaration 1 :

struct record { int ID; char * name; char grade; };struct record s1;struct record s2;struct record s3;

Declaration 2 :

struct record { int ID; char * name; char grade; } s1, s2;struct record s3;

Page 14: STRUCTURES

Structures : DECLARATION ALTERNATIVES

Declaration 1 :

struct record { int ID; char * name; char grade; };

struct record s1;struct record s2;

Declaration 3 :

struct { int ID; char * name; char grade; } s1, s2;

/* no tag name *//* no permission to declare other variables of this type */

Page 15: STRUCTURES

Structures : DECLARATION ALTERNATIVES

Declaration 4 :

struct record { int ID; char * name; char grade; };typedef struct record rec;

rec s1;struct record s2;

Declaration 5 : /* high degree of modularity and portability */

typedef struct { int ID; char * name; char grade; } rec;rec s1; rec s2;

Page 16: STRUCTURES

Initialization of Structure Objects

1. struct names { char name[10];int length;int weigth;} man[3]= { “Tom”, 180, 65, “George”, 170, 68, “Bob”, 190, 100 };

2. struct names woman[2]={{“Mary”, 170, 55}, {“Sue”, 160,67}};

3. struct names your;

your. name=“Jane”;your.length=160;your.weigth=50;

Page 17: STRUCTURES

Structures in Structures#include<stdio.h>

struct physical_info { int length;int weigth; } ;

struct record {int salary;int working_hour;struct physical_info man; } ;

main(){ struct record s1;

s1.salary=10000;s1.working_hour= 6;

s1.man.length=180;s1.man.weigth=78; }

Page 18: STRUCTURES

Exercise 1 on Structures• Declare a structure for complex numbers

(real and imaginary part)

• Create 1 dynamic object (use pointers)

• Ask user to fill the object

• Print out the complex number as given below output

Please give the values for complex number : 5 6Complex number : 5 + 6i

Page 19: STRUCTURES

Exercise 1 on Structures struct complex{ int real;

int imaginary; };

main(){

struct complex * p; // Declare pointer for object

// Memory allocation for object

p=(struct complex *) malloc(sizeof(struct complex));

printf( " Please give the values for complex number : " );scanf( "%d%d", &(p->real), & (p->imaginary) );

printf( "Complex number : %d + %d i", p->real, p->imaginary );

}

Page 20: STRUCTURES

Senem Kumova Metin

// A function to add two integersint add(int a, int b){ int result= a+b;

return result; }

struct complex { int r; int i; };

// A function to add two complex numbersstruct complex add ( struct complex a, struct

complex b ){ struct complex result;

result.r=a.r+b.r;result.i=a.i+b.i;return result; }

Exercise 2 : Define a function to add two complex numbers

Page 21: STRUCTURES

Exercise 3 on Structures

struct rectangular_prism{ int height;

int width;int length; };

int volume(struct rectangular_prism x){return x.height*x.width*x.length; }

int area (struct rectangular_prism x){ return 2*x.width*x.lenght +

2*x.lenght*x.height +2*x.width*x.lenght;

}