Addresses and Numbers ◆Pointer is an address ◆Address is an integer Pointer is NOT an integer! ◆Not crazy→abstraction! C++forces pointers be used as addresses Cannot be used as numbers Even though it "is a"number Copyright 2006 Pearson Addison-Wesley.All rights reserved. 10-6
Copyright © 2006 Pearson Addison-Wesley. All rights reserved. 10-6 Addresses and Numbers ¨ Pointer is an address ¨ Address is an integer ¨ Pointer is NOT an integer! ¨Not crazy abstraction! ¨ C++ forces pointers be used as addresses ¨Cannot be used as numbers ¨Even though it "is a" number
Pointing ◆Terminology,view Talk of "pointing",not "addresses" Pointer variable "points to"ordinary variable Leave "address"talk out Makes visualization clearer "See"memory references ◆Arrows Copyright006 Pearson Addison-Wesley.All rights reserved. 10-7
Copyright © 2006 Pearson Addison-Wesley. All rights reserved. 10-7 Pointing ¨ Terminology, view ¨Talk of "pointing" , not "addresses" ¨Pointer variable "points to" ordinary variable ¨Leave "address" talk out ¨ Makes visualization clearer ¨"See" memory references ¨Arrows
Pointing to . ◆int*p1,*p2,v1,v2; p1=&V1; Sets pointer variable p1 to "point to"int variable v1 ◆Operator,& Determines "address of"variable ◆Read like: "p1 equals address of v1" ◆Or"p1 points to v1" Copyright 2006 Pearson Addison-Wesley.All rights reserved. 10-8
Copyright © 2006 Pearson Addison-Wesley. All rights reserved. 10-8 Pointing to . ¨ int *p1, *p2, v1, v2; p1 = &v1; ¨ Sets pointer variable p1 to "point to" int variable v1 ¨ Operator, & ¨ Determines "address of" variable ¨ Read like: ¨ "p1 equals address of v1" ¨ Or "p1 points to v1
Pointing to . ◆Recall: int *p1,*p2,v1,v2; p1=&v1; Two ways to refer to v1 now: ◆Variable v1 itself:: cout <v1; ◆Via pointer p1: cout *p1; Dereference operator, Pointer variable "derereferenced" Means:"Get data that p1 points to" Copyright006 Pearson Addison-Wesley.All rights reserved. 10-9
Copyright © 2006 Pearson Addison-Wesley. All rights reserved. 10-9 Pointing to . ¨ Recall: int *p1, *p2, v1, v2; p1 = &v1; ¨ Two ways to refer to v1 now: ¨ Variable v1 itself: cout << v1; ¨ Via pointer p1: cout *p1; ¨ Dereference operator, * ¨ Pointer variable "derereferenced" ¨ Means: "Get data that p1 points to
"Pointing to"Example ◆Consider: V1=0; p1=&V1; *p1=42; cout <v1 <endl; cout <*p1 <endl; ◆Produces output: 42 42 p1 and v1 refer to same variable Copyright 2006 Pearson Addison-Wesley.All rights reserved. 10-10
Copyright © 2006 Pearson Addison-Wesley. All rights reserved. 10-10 "Pointing to" Example ¨ Consider: v1 = 0; p1 = &v1; *p1 = 42; cout << v1 << endl; cout << *p1 << endl; ¨ Produces output: 42 42 ¨ p1 and v1 refer to same variable