Pointers - PowerPoint PPT Presentation

About This Presentation
Title:

Pointers

Description:

Title: Data Abstraction: The Walls Author: John Holm Last modified by: James Calvin Created Date: 1/31/2003 1:34:54 AM Document presentation format – PowerPoint PPT presentation

Number of Views:85
Avg rating:3.0/5.0
Slides: 22
Provided by: JohnH336
Category:

less

Transcript and Presenter's Notes

Title: Pointers


1
Pointers
  • (Walls Mirrors - Beginning of Chapter 4)

2
Whats a Pointer?
  • A pointer variable is a variable that can contain
    the location of another variable as its value.
  • The location of a variable is usually implemented
    by indicating its address in (RAM) memory.
  • The location (or address) of a variable is called
    a pointer.
  • Sometimes, for brevity, a pointer variable is
    simply called a pointer. You will need to be
    careful to understand whether pointer refers to a
    variable or the address of a variable.

3
Pointers -Real Life Examples
  • Suppose that your friend, Sam, borrows your copy
    of Walls Mirrors. In its place, he leaves you
    the note
  • Borrowed your Walls Mirrors book.
  • Thanks, Sam
  • This note is like a pointer, since it it not your
    book, but it tells you where to go to find it.
  • (The paper on which the note is written is like
    a pointer variable.)

4
Pointers - Graphical Representation
  • A variable is often represented as a box.
  • The value of the variable is written inside the
    box.
  • If the variable is a pointer variable, containing
    a pointer, the box will contain the tail of an
    arrow that points to another variable.

5
Pointers - Suggestion
  • If you have a problem with pointers, draw the
    layout.
  • It may be difficult to understand what is going
    on without a graphical representation of the
    pointer relationships.

6
Pointer Declarations
  • int iptr // iptr is a pointer to an int
  • char cptr // cptr is a pointer to a char
  • float fptr // fptr is a pointer to a float
  • List Lptr // Lptr is a pointer to a List
    object
  • Sphere Sptr // Sptr is a pointer to a Sphere
    object

7
Pointer Operations
  • Assignment
  • A pointer variable can be assigned only a pointer
    (i.e. the address of a variable) or NULL (which
    equals 0).
  • Comparison , !
  • Pointers can be compared for equality.
  • Addition/Subtraction , ?
  • Pointers can be incremented or decremented with
    an integer.
  • Dereferencing
  • ptr returns the value of the object pointed to
    by ptr.
  • Address of
  • ptr returns the address of ptr (i.e. pointer to
    ptr).

8
Pointer Operations - Address of
  • The Address of operator returns the address of
    an object.
  • float PI 3.14159 float PIptr
  • PI returns the address of the variable PI, not
    3.14159 (the value stored in PI).
  • PIptr PI stores the address of variable PI in
    variable, PIptr.
  • PIptr returns the address of variable PIptr.

9
Pointer Operations - Dereferencing
  • The Dereferencing operator returns the value of
    the object to which its operand points.
  • float PI 3.14159 float PIptr float
    X
  • PIptr PI // PIptr contains the address of PI
  • X PIptr // Value stored in PI (3.14159) is
  • // assigned to X
  • ((PIptr)) PIptr (PI) PI 3.14159

10
Pointer Initialization
  • int ptr // pointer to int declared, value
    undefined
  • int x 5 // int declared and initialized to 5
  • cout ltlt x // prints 5
  • cout ltlt ptr // Error! Prints undefined value,
    since ptr not
  • // initialized
  • ptr x // ptr now contains the address of x
  • cout ltlt ptr // prints 5

11
Pointer Initialization - Suggestion
  • When a pointer variable is declared it is (by
    default) uninitialized. Therefore, where it is
    pointing is undefined.
  • Its a good practice to initialize newly declared
    pointer variables to the NULL pointer ( 0).
  • This will insure that the pointer variable is not
    pointing anywhere it shouldnt.
  • This will help you determine if a valid pointer
    has been assigned to it.
  • if( ptr NULL )
  • cout ltlt ptr has not been initialized ltlt endl

12
new Operator
  • The operator new creates a new object of a given
    type.
  • new returns a pointer to the newly created
    object.
  • ptr new int

13
new Operator (Contd.)
  • An object created with new does not have a name
    and is not declared.
  • An object created with new can only be used by
    following (dereferencing) a pointer to it.
  • You need to be careful to not lose the pointer to
    an object created with new, since there is no
    other way to access it.
  • Memory that was allocated with new and has become
    inaccessible is called a memory leak.
  • For programs that run for long periods of time,
    memory leaks can be the reason for system failure.

14
new Operator - Example 1
  • int ptr // pointer to int declared, value
    undefined
  • ptr 5 // Error! ptr contains invalid address
    and
  • // space for int not allocated
  • ptr new int // space for int allocated and
    pointer to it
  • // assigned to ptr
  • ptr 5 // 5 is stored in the int pointed to by
    ptr

15
new Operator - Example 2
  • int p, q // declare two pointer to int
    variables
  • p new int // allocate space for an int make
    p point to it
  • p 25 // store 25 in the int pointed to by p
  • What is the effect of the following?
  • q p

16
new Operator - Example 2 (Contd.)
  • Draw a picture!

17
new Operator - Example 3
  • int p, q // declare two pointer to int
    variables
  • p new int // allocate space for an int make
    p point to it
  • q new int // allocate space for an int make
    q point to it
  • p 35 // store 35 in the int pointed to by p
  • What is the effect of the following?
  • q p

18
new Operator - Example 3 (Contd.)
  • Draw a picture!

19
new Operator - Example 3 (Contd.)
  • What would have happened if we had executed
  • q p
  • instead of
  • q p

20
new Operator - Example 3 (Contd.)
  • The new int, previously pointed to by q is LOST
    and cannot be recovered. This is called a memory
    leak.

21
Arrays and Pointers
  • int a50
  • int aptr a
  • a is equivalent to a0
  • aptr a is equivalent to aptr a0
  • aptr5 is equivalent to a5
  • (aptr5) is equivalent to a5
Write a Comment
User Comments (0)
About PowerShow.com