scis.regis.edu ● cs-362: data structures week 6 part 2 dr. jess borrego 1

45
scis.regis.edu [email protected] CS-362: Data Structures Week 6 Part 2 Dr. Jesús Borrego 1

Upload: antonia-harmon

Post on 19-Jan-2018

214 views

Category:

Documents


0 download

DESCRIPTION

Pointer Data Type/Pointer Variables The type is integer The Name of the integer is A The address is The value stored in A is 325 int A = 325;10280 A 3 325

TRANSCRIPT

Page 1: Scis.regis.edu ● CS-362: Data Structures Week 6 Part 2 Dr. Jess Borrego 1

scis.regis.edu ● [email protected]

CS-362: Data StructuresWeek 6Part 2

Dr. Jesús Borrego

1

Page 2: Scis.regis.edu ● CS-362: Data Structures Week 6 Part 2 Dr. Jess Borrego 1

Topics•Dynamic Data

▫Pointers▫Address

•Pointers to different data types•Sample programs

2

Page 3: Scis.regis.edu ● CS-362: Data Structures Week 6 Part 2 Dr. Jess Borrego 1

Pointer Data Type/Pointer Variables•The type is integer•The Name of the integer is A•The address is 10280•The value stored in A is 325

int A = 325; 10280

A

3

325

Page 4: Scis.regis.edu ● CS-362: Data Structures Week 6 Part 2 Dr. Jess Borrego 1

More Pointers

4

Page 5: Scis.regis.edu ● CS-362: Data Structures Week 6 Part 2 Dr. Jess Borrego 1

Running the program

5

Page 6: Scis.regis.edu ● CS-362: Data Structures Week 6 Part 2 Dr. Jess Borrego 1

Running the program

6

Page 7: Scis.regis.edu ● CS-362: Data Structures Week 6 Part 2 Dr. Jess Borrego 1

PointerAndAddress

7

Page 8: Scis.regis.edu ● CS-362: Data Structures Week 6 Part 2 Dr. Jess Borrego 1

Declaring Pointer Variables• Syntax:

• Examples:int *p;char *ch;

• These statements are equivalent:int *p;int* p; int * p;

8

Page 9: Scis.regis.edu ● CS-362: Data Structures Week 6 Part 2 Dr. Jess Borrego 1

Pointer Intro Program (I)

9

Page 10: Scis.regis.edu ● CS-362: Data Structures Week 6 Part 2 Dr. Jess Borrego 1

Pointer Intro Program (II)

10

Page 11: Scis.regis.edu ● CS-362: Data Structures Week 6 Part 2 Dr. Jess Borrego 1

Running the program

11

Page 12: Scis.regis.edu ● CS-362: Data Structures Week 6 Part 2 Dr. Jess Borrego 1

Pointer Intro Program (I)

12

Page 13: Scis.regis.edu ● CS-362: Data Structures Week 6 Part 2 Dr. Jess Borrego 1

Pointer Intro Program (II)

13

Page 14: Scis.regis.edu ● CS-362: Data Structures Week 6 Part 2 Dr. Jess Borrego 1

Pointer Intro Program (II)

14

Page 15: Scis.regis.edu ● CS-362: Data Structures Week 6 Part 2 Dr. Jess Borrego 1

MoreStruct

15

Page 16: Scis.regis.edu ● CS-362: Data Structures Week 6 Part 2 Dr. Jess Borrego 1

Running the program

16

Page 17: Scis.regis.edu ● CS-362: Data Structures Week 6 Part 2 Dr. Jess Borrego 1

MoreBeatles (I)

17

Page 18: Scis.regis.edu ● CS-362: Data Structures Week 6 Part 2 Dr. Jess Borrego 1

MoreBeatles (II)

18

Page 19: Scis.regis.edu ● CS-362: Data Structures Week 6 Part 2 Dr. Jess Borrego 1

MoreBeatles (III)

19

Page 20: Scis.regis.edu ● CS-362: Data Structures Week 6 Part 2 Dr. Jess Borrego 1

Running the program

20

Page 21: Scis.regis.edu ● CS-362: Data Structures Week 6 Part 2 Dr. Jess Borrego 1

PointerSwap

21

Page 22: Scis.regis.edu ● CS-362: Data Structures Week 6 Part 2 Dr. Jess Borrego 1

Running the Program

22

Page 23: Scis.regis.edu ● CS-362: Data Structures Week 6 Part 2 Dr. Jess Borrego 1

What happened?•The swap did not work?•The before and after are the same•Need to make sure we get the values back

to the calling program•It is calling by Value•How do we fix it?

23

Page 24: Scis.regis.edu ● CS-362: Data Structures Week 6 Part 2 Dr. Jess Borrego 1

Address of Operator (&)•The ampersand, &, is called the address of

operator•The address of operator is a unary

operator that returns the address of its operand

24

Page 25: Scis.regis.edu ● CS-362: Data Structures Week 6 Part 2 Dr. Jess Borrego 1

PointerSwap2

25

Page 26: Scis.regis.edu ● CS-362: Data Structures Week 6 Part 2 Dr. Jess Borrego 1

PointerSwap3

26

Page 27: Scis.regis.edu ● CS-362: Data Structures Week 6 Part 2 Dr. Jess Borrego 1

Running the program (I)

27

Page 28: Scis.regis.edu ● CS-362: Data Structures Week 6 Part 2 Dr. Jess Borrego 1

Running the program (II)

28

Page 29: Scis.regis.edu ● CS-362: Data Structures Week 6 Part 2 Dr. Jess Borrego 1

Dynamic Arrays•Dynamic array: array created during

the execution of a program•Example:int *p;p = new int[10];

*p = 25;p++; //to point to next array component*p = 35;

29

stores 25 into the first memory location

stores 35 into the second memory location

Page 30: Scis.regis.edu ● CS-362: Data Structures Week 6 Part 2 Dr. Jess Borrego 1

Dynamic Arrays (cont'd.)•C++ allows us to use array notation to

access these memory locations•The statements:p[0] = 25;p[1] = 35;store 25 and 35 into the first and second array components, respectively

30

Page 31: Scis.regis.edu ● CS-362: Data Structures Week 6 Part 2 Dr. Jess Borrego 1

Dynamic Arrays (cont'd.)

31

Page 32: Scis.regis.edu ● CS-362: Data Structures Week 6 Part 2 Dr. Jess Borrego 1

Dynamic Arrays (cont'd.)

32

Page 33: Scis.regis.edu ● CS-362: Data Structures Week 6 Part 2 Dr. Jess Borrego 1

Dynamic Arrays (cont'd.)• The value of list (1000) is constant

– Cannot be altered during program execution– The increment and decrement operations

cannot be applied to list• If p is a pointer variable of type int, then:p = list;copies the value of list, the base address of the array, into p– We can perform ++ and -- operations on p

• An array name is a constant pointer

33

Page 34: Scis.regis.edu ● CS-362: Data Structures Week 6 Part 2 Dr. Jess Borrego 1

34

Dynamic Arrays (cont'd.)

Page 35: Scis.regis.edu ● CS-362: Data Structures Week 6 Part 2 Dr. Jess Borrego 1

Functions and Pointers•A pointer variable can be passed as a

parameter either by value or by reference•To make a pointer a reference parameter

in a function heading, use &:void pointerParameters(int* &p, double *q){

. . .}

35

Page 36: Scis.regis.edu ● CS-362: Data Structures Week 6 Part 2 Dr. Jess Borrego 1

Pointers and Function Return Values•A function can return a value of type

pointer:

int* testExp(...){

. . .}

36

Page 37: Scis.regis.edu ● CS-362: Data Structures Week 6 Part 2 Dr. Jess Borrego 1

Dynamic Two-Dimensional Arrays•You can create dynamic multidimensional

arrays•Examples:

37

declares board to be an array of four pointers wherein each pointer is of type int

creates the rows of board

declares board to be a pointer to a pointer

Page 38: Scis.regis.edu ● CS-362: Data Structures Week 6 Part 2 Dr. Jess Borrego 1

PointerArray

38

Page 39: Scis.regis.edu ● CS-362: Data Structures Week 6 Part 2 Dr. Jess Borrego 1

PointerArray (Cont’d)

39

Page 40: Scis.regis.edu ● CS-362: Data Structures Week 6 Part 2 Dr. Jess Borrego 1

Running the program

40

Page 41: Scis.regis.edu ● CS-362: Data Structures Week 6 Part 2 Dr. Jess Borrego 1

PrintArray2D

41

Page 42: Scis.regis.edu ● CS-362: Data Structures Week 6 Part 2 Dr. Jess Borrego 1

PrintArray2D (Cont’d)

42

Page 43: Scis.regis.edu ● CS-362: Data Structures Week 6 Part 2 Dr. Jess Borrego 1

PrintArray (Cont’d)

43

Page 44: Scis.regis.edu ● CS-362: Data Structures Week 6 Part 2 Dr. Jess Borrego 1

Running the Program

44

Page 45: Scis.regis.edu ● CS-362: Data Structures Week 6 Part 2 Dr. Jess Borrego 1

Resources•Can search the internet for tutorials on

pointers•On YouTube:•http://www.youtube.com/watch?v=eFWCQ

exfaeg•From Google, search for

▫“C++ pointer tutorial“

45