• Sonuç bulunamadı

Structures in C

N/A
N/A
Protected

Academic year: 2021

Share "Structures in C "

Copied!
21
0
0

Yükleniyor.... (view fulltext now)

Tam metin

(1)

STRUCTURES

(2)

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

(3)

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

(4)

Defining Structures 1

struct complex_number {

int real_part;

int imaginary_part;

};

“complex_numb er”

is the tag name

“struct

complex_number”

is the new type

(5)

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]; };

(6)

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

(7)

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 width length

(8)

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] 

(9)

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 of objects in

array

number of objects in

array

(array size)

(10)

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=1

5

(11)

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=1

5

(12)

Structures : Accessing members of structures

// Defines structure

struct 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=200 710

name=

“doddy”

ID=200 711

name =??

group[0]  group[1] 

(13)

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;

(14)

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 */

(15)

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;

(16)

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;

(17)

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; }

(18)

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 6 Complex number : 5 + 6i

(19)

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 );

}

(20)

Senem Kumova Metin

// A function to add two integers int add(int a, int b)

{ int result= a+b;

return result; }

struct complex { int r; int i; };

// A function to add two complex numbers

struct 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

(21)

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;

}

Referanslar

Benzer Belgeler

The turning range of the indicator to be selected must include the vertical region of the titration curve, not the horizontal region.. Thus, the color change

the polypeptide chain to the COOH end by attaching an amino acid at each step... The codons in the mRNA molecule recognized by the anticodons found at tRNA per rules of base pairing

Ceftolozane is a novel cephalosporin antibiotic, developed for the treatment of infections with gram-negative bacteria that have become resistant to conventional antibiotics.. It was

VARIENTS BILBAO V3 PHAENO CENTRE V4 LYONS STATION V5 EDEN PROJECT VI MILLENIUM DOME V2 COMPONENTS ENTRY (E Signposted paths to the main entrance E1

There is also an obvious division between THEORETICAL CRITICISM, which attempts to arrive at the general principles of art and to formulate inclusive and enderung acsthetic and

1 Ekim 2009 tarihinde ise ‹stanbul T›p Fakülte- si’nden mezun, ‹ç Hastal›klar› uzmanl›¤›n› ve Roma- toloji yan dal uzmanl›¤›n› bilim dal›m›zda

Yapılan bir çalıümada Summers ve arkadaüları (), Crohn hastal ıùında klinik remisyonu saùlamada SS, prednizon ve azatiyopürinin etkinli ùini plasebo ile kar

The types of nasal septal deviation were compared in terms of the Mallampati score, retroglossal space, tonsil grade, and pharyngeal space.. There were significant differences