1 pointers revisited linda m c iver. 2 pointer examples int i = 0; 0x2000 0x2001 0x2002 0x2003

Post on 21-Dec-2015

213 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

1

Pointers Revisited

Linda McIver

2

Pointer Examplesint i = 0;

0x2000 0x2001 0x2002 0x2003

3

Pointer Examples

0

int i = 0;

i

0x2000 0x2001 0x2002 0x2003

4

Pointer Examples

0

int i = 0;

int* intPtr = NULL;

i

0x2000 0x2001 0x2002 0x2003

int i = 0;

5

Pointer Examples

0 NULL

int i = 0;

int* intPtr = NULL;

i intPtr

0x2000 0x2001 0x2002 0x2003

int i = 0;

6

Pointer Examples

0 NULL

int i = 0;

int* intPtr = NULL;

intPtr = &i;

i intPtr

0x2000 0x2001 0x2002 0x2003

7

Pointer Examples

0 0x2000

int i = 0;

int* intPtr = NULL;

intPtr = &i;

i intPtr

0x2000 0x2001 0x2002 0x2003

8

Pointer Examples

0 0x2000

i intPtr

0x2000 0x2001 0x2002 0x2003

What do these expressions evaluate to?

&i

intPtr

*intPtr

i

&intPtr

9

Pointer Examples

0 0x2000

i intPtr

0x2000 0x2001 0x2002 0x2003

What do these expressions evaluate to?

&i 0x2000

intPtr

*intPtr

i

&intPtr

10

Pointer Examples

0 0x2000

i intPtr

0x2000 0x2001 0x2002 0x2003

What do these expressions evaluate to?

&i 0x2000

intPtr 0x2000

*intPtr

i

&intPtr

11

Pointer Examples

0 0x2000

i intPtr

0x2000 0x2001 0x2002 0x2003

What do these expressions evaluate to?

&i 0x2000

intPtr 0x2000

*intPtr 0

i

&intPtr

12

Pointer Examples

0 0x2000

i intPtr

0x2000 0x2001 0x2002 0x2003

What do these expressions evaluate to?

&i 0x2000

intPtr 0x2000

*intPtr 0

i 0

&intPtr

13

Pointer Examples

0 0x2000

i intPtr

0x2000 0x2001 0x2002 0x2003

What do these expressions evaluate to?

&i 0x2000

intPtr 0x2000

*intPtr 0

i 0

&intPtr 0x2001

14

Pointer Examples

&i == intPtr == 0x2000

i == *intPtr == 0

int i = 0;

int* intPtr = NULL;

intPtr = &i;

0 0x2000

i intPtr

0x2000 0x2001 0x2002 0x2003

15

Pointer Examples

'b'

char c = 'b';

c

0x2000 0x2001 0x2002 0x2003

16

Pointer Examples

'b' NULL

char c = 'b';

char* charPtr = NULL;

c charPtr

0x2000 0x2001 0x2002 0x2003

17

Pointer Examples

'b' NULL

char c = 'b';

char* charPtr = NULL;

c charPtr

0x2000 0x2001 0x2002 0x2003

What does *charPtr

evaluate to now?

18

Pointer Examples

'b' NULL 'L'

char c = 'b';

char* charPtr = NULL;

char initial = 'L';

c charPtr initial

0x2000 0x2001 0x2002 0x2003

19

Pointer Examples

'b' 0x2000 'L'

char c = 'b';

char* charPtr = NULL;

char initial = 'L';

charPtr = &c;

c charPtr initial

0x2000 0x2001 0x2002 0x2003

20

Pointer Examples

'b' 0x2000 'L'

char c = 'b';

char* charPtr = NULL;

char initial = 'L';

charPtr = &c;

c charPtr initial

0x2000 0x2001 0x2002 0x2003

What does *charPtr

evaluate to now?

21

Pointer Examples

'b' 0x2002 'L'

char c = 'b';

char* charPtr = NULL;

char initial = 'L';

charPtr = &c;

charPtr = &initial;

c charPtr initial

0x2000 0x2001 0x2002 0x2003

22

Pointer Examples

'b' 0x2002 'L'

char c = 'b';

char* charPtr = NULL;

char initial = 'L';

charPtr = &c;

charPtr = &initial;

c charPtr initial

0x2000 0x2001 0x2002 0x2003

What does *charPtr

evaluate to now?

23

Pointer Summary

• A pointer holds an address• & gives you the address of a variable• *somePtr is a de-reference, which gives

you the value of the variable pointed to by somePtr

• Like variables, pointers have a particular type

top related