CS-362: Data Structures Week 6 Part 2

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

description

CS-362: Data Structures Week 6 Part 2. Dr. Jesús Borrego. Topics. Dynamic Data Pointers Address Pointers to different data types Sample programs. Pointer Data Type/Pointer Variables. 325. The type is integer The Name of the integer is A The address is 10280 - PowerPoint PPT Presentation

Transcript of CS-362: Data Structures Week 6 Part 2

Page 1: CS-362: Data Structures Week 6 Part 2

scis.regis.edu ● [email protected]

CS-362: Data StructuresWeek 6Part 2

Dr. Jesús Borrego

1

Page 2: CS-362: Data Structures Week 6 Part 2

Topics

•Dynamic Data▫Pointers▫Address

•Pointers to different data types•Sample programs

2

Page 3: CS-362: Data Structures Week 6 Part 2

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: CS-362: Data Structures Week 6 Part 2

More Pointers

4

Page 5: CS-362: Data Structures Week 6 Part 2

Running the program

5

Page 6: CS-362: Data Structures Week 6 Part 2

Running the program

6

Page 7: CS-362: Data Structures Week 6 Part 2

PointerAndAddress

7

Page 8: CS-362: Data Structures Week 6 Part 2

Declaring Pointer Variables

• Syntax:

• Examples:int *p;char *ch;

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

8

Page 9: CS-362: Data Structures Week 6 Part 2

Pointer Intro Program (I)

9

Page 10: CS-362: Data Structures Week 6 Part 2

Pointer Intro Program (II)

10

Page 11: CS-362: Data Structures Week 6 Part 2

Running the program

11

Page 12: CS-362: Data Structures Week 6 Part 2

Pointer Intro Program (I)

12

Page 13: CS-362: Data Structures Week 6 Part 2

Pointer Intro Program (II)

13

Page 14: CS-362: Data Structures Week 6 Part 2

Pointer Intro Program (II)

14

Page 15: CS-362: Data Structures Week 6 Part 2

MoreStruct

15

Page 16: CS-362: Data Structures Week 6 Part 2

Running the program

16

Page 17: CS-362: Data Structures Week 6 Part 2

MoreBeatles (I)

17

Page 18: CS-362: Data Structures Week 6 Part 2

MoreBeatles (II)

18

Page 19: CS-362: Data Structures Week 6 Part 2

MoreBeatles (III)

19

Page 20: CS-362: Data Structures Week 6 Part 2

Running the program

20

Page 21: CS-362: Data Structures Week 6 Part 2

PointerSwap

21

Page 22: CS-362: Data Structures Week 6 Part 2

Running the Program

22

Page 23: CS-362: Data Structures Week 6 Part 2

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: CS-362: Data Structures Week 6 Part 2

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: CS-362: Data Structures Week 6 Part 2

PointerSwap2

25

Page 26: CS-362: Data Structures Week 6 Part 2

PointerSwap3

26

Page 27: CS-362: Data Structures Week 6 Part 2

Running the program (I)

27

Page 28: CS-362: Data Structures Week 6 Part 2

Running the program (II)

28

Page 29: CS-362: Data Structures Week 6 Part 2

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: CS-362: Data Structures Week 6 Part 2

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: CS-362: Data Structures Week 6 Part 2

Dynamic Arrays (cont'd.)

31

Page 32: CS-362: Data Structures Week 6 Part 2

Dynamic Arrays (cont'd.)

32

Page 33: CS-362: Data Structures Week 6 Part 2

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: CS-362: Data Structures Week 6 Part 2

34

Dynamic Arrays (cont'd.)

Page 35: CS-362: Data Structures Week 6 Part 2

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: CS-362: Data Structures Week 6 Part 2

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

pointer:

int* testExp(...){

. . .}

36

Page 37: CS-362: Data Structures Week 6 Part 2

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: CS-362: Data Structures Week 6 Part 2

PointerArray

38

Page 39: CS-362: Data Structures Week 6 Part 2

PointerArray (Cont’d)

39

Page 40: CS-362: Data Structures Week 6 Part 2

Running the program

40

Page 41: CS-362: Data Structures Week 6 Part 2

PrintArray2D

41

Page 42: CS-362: Data Structures Week 6 Part 2

PrintArray2D (Cont’d)

42

Page 43: CS-362: Data Structures Week 6 Part 2

PrintArray (Cont’d)

43

Page 44: CS-362: Data Structures Week 6 Part 2

Running the Program

44

Page 45: CS-362: Data Structures Week 6 Part 2

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