Starting Out with C++: Early Objects 5/e © 2006 Pearson Education. All Rights Reserved Copyright 2004 Scott/Jones Publishing Starting Out with C++: Early.

Slides:



Advertisements
Similar presentations
Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 8: Arrays Starting Out with C++ Early Objects Seventh Edition by.
Advertisements

Chapter 9 Pointers and Dynamic Arrays. Overview 9.1 Pointers 9.2 Dynamic Arrays.
Copyright © 2014, 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Starting Out with C++ Early Objects Eighth Edition by Tony Gaddis,
Pointers Typedef Pointer Arithmetic Pointers and Arrays.
Engineering Problem Solving With C++ An Object Based Approach Chapter 9 Pointers and Creating Data Structures.
Copyright © 2012 Pearson Education, Inc. Chapter 9: Pointers.
Chapter 9. 2 Objectives You should be able to describe: Addresses and Pointers Array Names as Pointers Pointer Arithmetic Passing Addresses Common Programming.
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Starting Out with C++ Early Objects Sixth Edition Chapter 10: Pointers by.
Pointers A pointer is a variable that contains memory address as its value. A variable directly contains a specific value. A pointer contains an address.
Starting out with C++1 Chapter 9 – Pointers Getting the address of a Variable Why do we have pointers? Indirection – difference between –Will you go out.
Starting Out with C++, 3 rd Edition 1 Chapter 9 – Pointers.
Review on pointers and dynamic objects. Memory Management  Static Memory Allocation  Memory is allocated at compiling time  Dynamic Memory  Memory.
Starting Out with C++ Early Objects Eighth Edition by Tony Gaddis, Judy Walters, and Godfrey Muganda Chapter 10: Pointers.
Copyright © 2015, 2012, 2009 Pearson Education, Inc., Publishing as Addison-Wesley All rights reserved. Chapter 9: Pointers.
1 Chapter 9 Pointers. 2 Topics 8.1 Getting the Address of a Variable 8.2 Pointer Variables 8.3 Relationship Between Arrays and Pointers 8.4 Pointer Arithmetic.
Chapter 13: Pointers, Classes, Virtual Functions, and Abstract Classes
C++ Programming: Program Design Including Data Structures, Fourth Edition Chapter 13: Pointers, Classes, Virtual Functions, and Abstract Classes.
C++ Programming: From Problem Analysis to Program Design, Fourth Edition Chapter 14: Pointers, Classes, Virtual Functions, and Abstract Classes.
Prof. amr Goneid, AUC1 CSCE 110 PROGRAMMING FUNDAMENTALS WITH C++ Prof. Amr Goneid AUC Part 10. Pointers & Dynamic Data Structures.
Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Starting Out with C++ Early Objects Seventh Edition by Tony Gaddis, Judy.
Copyright © 2012 Pearson Education, Inc. Chapter 9: Pointers.
Lesson 9 Pointers CS 1 Lesson 9 -- John Cole1. Pointers in Wonderland The name of the song is called ‘Haddock’s Eyes’.” “Oh, that’s the name of the song,
Starting Out with C++ Early Objects Seventh Edition by Tony Gaddis, Judy Walters, and Godfrey Muganda Modified by use by the MSU CMPS Dept. Chapter 10:
C++ Pointers Copies from SEE C++ programming course and from Starting Out with C++: Early Objects, 8/E by Tony Gaddis, Judy Walters and Godfrey Muganda.
Chapter 9 Pointers Fall 2005 Csc 125 Introduction to C++
Pointers Chapter 9. Getting The Address Of A Variable Each variable in program is stored at a unique address Use address operator & to get address of.
Copyright © 2009 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Dynamic Memory Allocation 9.8.
Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Starting Out with C++ Early Objects Seventh Edition by Tony Gaddis, Judy.
Copyright © 2009 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 9: Pointers.
Copyright 2003 Scott/Jones Publishing Standard Version of Starting Out with C++, 4th Edition Chapter 11 Structured Data.
Chapter 12: Pointers, Classes, Virtual Functions, and Abstract Classes.
CS102 Introduction to Computer Programming Chapter 9 Pointers.
Structured Data Chapter 11. Combining Data Into Structures Structure: C++ construct that allows multiple variables to be grouped together Format: struct.
Review 1 List Data Structure List operations List Implementation Array Linked List.
C++ Programming: From Problem Analysis to Program Design, Third Edition Chapter 14: Pointers.
Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 9 Pointers and Dynamic Arrays.
Pointer. lvalues In C++, any expression that refers to an internal memory location is called an lvalue Appear on left side of assignment statement e.g.
Copyright © 2014 Pearson Addison-Wesley. All rights reserved. Chapter 9 Pointers and Dynamic Arrays.
Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Starting Out with C++ Early Objects Seventh Edition by Tony Gaddis, Judy.
Dynamic Array Allocation char *ptr; // ptr is a pointer variable that // can hold the address of a char ptr = new char[ 5 ]; // dynamically, during run.
1  Lecture 12 – Pointer FTMK, UTeM – Sem /2014.
A FIRST BOOK OF C++ CHAPTER 8 ARRAYS AND POINTERS.
Copyright © 2012 Pearson Education, Inc. Chapter 9: Pointers.
Copyright © 2009 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 9-1 Pointer Variables Pointer variable : Often just called a pointer, it's.
Pointers. Introduction to pointers Pointer variables contain memory addresses as their values. Usually, a variable directly contains a specific value.
C++ for Engineers and Scientists Second Edition Chapter 12 Pointers.
Pointers Lecture: 5. Topics 1 Pointers and the Address Operator 2 Pointer Variables 3 The Relationship Between Arrays and Pointers 4 Pointer Arithmetic.
CSCI 125 & 161 / ENGR 144 Lecture 16 Martin van Bommel.
Pointers Data Structures CSI 312 CSI Dept. Dr. Yousef Qawqzeh.
Topic 5 Addresses, Pointers and Arrays. 2 Objectives (Textbook Chapter 14) You should be able to describe: Addresses and Pointers Pointer Operators Pointer.
Standard Version of Starting Out with C++, 4th Edition
Chapter 13: Pointers, Classes, Virtual Functions, and Abstract Classes
Chapter 9: Pointers.
Lecture 9 Files, Pointers
Chapter 10: Pointers Starting Out with C++ Early Objects
Pointer.
Chapter 10: Pointers Starting Out with C++ Early Objects Ninth Edition
Chapter 10: Pointers Starting Out with C++ Early Objects
Chapter 12: Pointers, Classes, Virtual Functions, and Abstract Classes
Chapter 9: Pointers.
Chapter 10: Pointers Starting Out with C++ Early Objects Ninth Edition
Chapter 9: Pointers.
Alternate Version of STARTING OUT WITH C++ 4th Edition
Constant pointers and pointers to constants
Chapter 10: Pointers Starting Out with C++ Early Objects Ninth Edition
COP 3330 Object-oriented Programming in C++
Standard Version of Starting Out with C++, 4th Edition
Dynamic Memory Allocation
Pointers.
Presentation transcript:

Starting Out with C++: Early Objects 5/e © 2006 Pearson Education. All Rights Reserved Copyright 2004 Scott/Jones Publishing Starting Out with C++: Early Objects 5 th Edition Chapter 10 Pointers

Chapter 10 Starting Out with C++: Early Objects 5/e slide 2 © 2006 Pearson Education. All Rights Reserved Topics 10.1 Getting the Address of a Variable 10.2 Pointer Variables 10.3 The Relationship Between Arrays and Pointers 10.4 Pointer Arithmetic 10.5 Initializing Pointers

Chapter 10 Starting Out with C++: Early Objects 5/e slide 3 © 2006 Pearson Education. All Rights Reserved Topics (continued) 10.6 Comparing Pointers 10.7 Pointers as Function Parameters 10.8 Dynamic Memory Allocation 10.9 Returning Pointers from Functions Pointers to Structures and Class Objects When to Use., When to Use ->, and When to Use *

Chapter 10 Starting Out with C++: Early Objects 5/e slide 4 © 2006 Pearson Education. All Rights Reserved 10.1 Getting the Address of a Variable Each variable in program is stored at a unique address Use address operator & to get address of a variable: int num = -23; cout << &num; // prints address // in hexadecimal

Chapter 10 Starting Out with C++: Early Objects 5/e slide 5 © 2006 Pearson Education. All Rights Reserved 10.2 Pointer Variables Pointer variable (pointer): variable that holds an address Can perform some tasks more easily with an address than by accessing memory via a symbolic name: –Accessing unnamed memory locations –Array manipulation –etc.

Chapter 10 Starting Out with C++: Early Objects 5/e slide 6 © 2006 Pearson Education. All Rights Reserved Pointer Variables Definition: int *intptr; Read as: “ intptr can hold the address of an int” Spacing in definition does not matter: int * intptr;

Chapter 10 Starting Out with C++: Early Objects 5/e slide 7 © 2006 Pearson Education. All Rights Reserved Pointer Variables Assignment: int num = 25; int *intptr; intptr = &num; Memory layout: Can access num using intptr and indirection operator * : cout << intptr; // prints 0x4a00 cout << *intptr; // prints 25 numintptr 25 0x4a00 address of num : 0x4a00

Chapter 10 Starting Out with C++: Early Objects 5/e slide 8 © 2006 Pearson Education. All Rights Reserved 10.3 The Relationship Between Arrays and Pointers Array name is starting address of array int vals[] = {4, 7, 11}; cout << vals; // displays 0x4a00 cout << vals[0]; // displays starting address of vals : 0x4a00

Chapter 10 Starting Out with C++: Early Objects 5/e slide 9 © 2006 Pearson Education. All Rights Reserved The Relationship Between Arrays and Pointers Array name can be used as a pointer constant int vals[] = {4, 7, 11}; cout << *vals; // displays 4 Pointer can be used as an array name int *valptr = vals; cout << valptr[1]; // displays 7

Chapter 10 Starting Out with C++: Early Objects 5/e slide 10 © 2006 Pearson Education. All Rights Reserved Pointers in Expressions Given: int vals[]={4,7,11}; int *valptr = vals; What is valptr + 1 ? It means (address in valptr ) + (1 * size of an int ) cout << *(valptr+1); // displays 7 cout << *(valptr+2); // displays 11 Must use ( ) in expression

Chapter 10 Starting Out with C++: Early Objects 5/e slide 11 © 2006 Pearson Education. All Rights Reserved Array Access Array elements can be accessed in many ways Array access method Example array name and [ ] vals[2] = 17; pointer to array and [ ] valptr[2] = 17; array name and subscript arithmetic *(vals+2) = 17; pointer to array and subscript arithmetic *(valptr+2) = 17;

Chapter 10 Starting Out with C++: Early Objects 5/e slide 12 © 2006 Pearson Education. All Rights Reserved Array Access Array notation vals[i] is equivalent to the pointer notation *(vals + i) No bounds checking performed on array access

Chapter 10 Starting Out with C++: Early Objects 5/e slide 13 © 2006 Pearson Education. All Rights Reserved 10.4 Pointer Arithmetic Some arithmetic operators can be used with pointers: - Increment and decrement operators ++, -- - Integers can be added to or subtracted from pointers using the operators +, -, +=, and -= - One pointer can be subtracted from another by using the subtraction operator -

Chapter 10 Starting Out with C++: Early Objects 5/e slide 14 © 2006 Pearson Education. All Rights Reserved Pointer Arithmetic Assume the variable definitions int vals[]={4,7,11}; int *valptr = vals; Examples of use of ++ and -- valptr++; // points at 7 valptr--; // now points at 4

Chapter 10 Starting Out with C++: Early Objects 5/e slide 15 © 2006 Pearson Education. All Rights Reserved Pointer Arithmetic Assume the variable definitions: int vals[]={4,7,11}; int *valptr = vals; Example of use of + to add an int to a pointer: cout << *(valptr + 2) This statement will print 11

Chapter 10 Starting Out with C++: Early Objects 5/e slide 16 © 2006 Pearson Education. All Rights Reserved Pointer Arithmetic Assume the variable definitions: int vals[]={4,7,11}; int *valptr = vals; Example of use of +=: valptr = vals; // points at 4 valptr += 2; // points at 11

Chapter 10 Starting Out with C++: Early Objects 5/e slide 17 © 2006 Pearson Education. All Rights Reserved Pointer Arithmetic Assume the variable definitions int vals[] = {4,7,11}; int *valptr = vals; Example of pointer subtraction valptr += 2; cout << valptr - val; This statement prints 2 : the number of int s between valptr and val

Chapter 10 Starting Out with C++: Early Objects 5/e slide 18 © 2006 Pearson Education. All Rights Reserved 10.5 Initializing Pointers Can initialize to NULL int *ptr = NULL; Can initialize to addresses of other variables int num, *numPtr = &num; int val[ISIZE], *valptr = val; Initial value must have correct type float cost; int *ptr = &cost; // won't work

Chapter 10 Starting Out with C++: Early Objects 5/e slide 19 © 2006 Pearson Education. All Rights Reserved 10.6 Comparing Pointers Relational operators can be used to compare addresses in pointers Comparing addresses in pointers is not the same as comparing contents pointed at by pointers: if (ptr1 == ptr2) // compares // addresses if (*ptr1 == *ptr2) // compares // contents

Chapter 10 Starting Out with C++: Early Objects 5/e slide 20 © 2006 Pearson Education. All Rights Reserved 10.7 Pointers as Function Parameters A pointer can be a parameter Works like a reference parameter to allow change to argument from within function A pointer parameter must be explicitly dereferenced to access the contents at that address

Chapter 10 Starting Out with C++: Early Objects 5/e slide 21 © 2006 Pearson Education. All Rights Reserved Pointers as Function Parameters Requires: 1) asterisk * on parameter in prototype and heading void getNum(int *ptr); 2) asterisk * in body to dereference the pointer cin >> *ptr; 3) address as argument to the function getNum(&num);

Chapter 10 Starting Out with C++: Early Objects 5/e slide 22 © 2006 Pearson Education. All Rights Reserved Pointers as Function Parameters void swap(int *x, int *y) { int temp; temp = *x; *x = *y; *y = temp; } int num1 = 2, num2 = -3; swap(&num1, &num2);

Chapter 10 Starting Out with C++: Early Objects 5/e slide 23 © 2006 Pearson Education. All Rights Reserved 10.8 Dynamic Memory Allocation Can allocate storage for a variable while program is running Uses new operator to allocate memory double *dptr; dptr = new double; new returns address of memory location

Chapter 10 Starting Out with C++: Early Objects 5/e slide 24 © 2006 Pearson Education. All Rights Reserved Dynamic Memory Allocation Can also use new to allocate array arrayPtr = new double[25]; –Program terminates if there is not sufficient memory Can then use [ ] or pointer arithmetic to access array

Chapter 10 Starting Out with C++: Early Objects 5/e slide 25 © 2006 Pearson Education. All Rights Reserved Releasing Dynamic Memory Use delete to free dynamic memory delete dptr; Use delete [] to free dynamic array memory delete [] arrayptr; Only use delete with dynamic memory!

Chapter 10 Starting Out with C++: Early Objects 5/e slide 26 © 2006 Pearson Education. All Rights Reserved 10.9 Returning Pointers from Functions Pointer can be return type of function int* newNum(); Function must not return a pointer to a local variable in the function Function should only return a pointer –to data that was passed to the function as an argument –to dynamically allocated memory

Chapter 10 Starting Out with C++: Early Objects 5/e slide 27 © 2006 Pearson Education. All Rights Reserved Pointers to Structures and Class Objects Can create pointers to objects and structure variables Student stu1; Student *stuPtr = &stu1; Square sq1[4]; Square *squarePtr = &sq1[0]; Need () when using * and. (*stuptr).studentID = 12204;

Chapter 10 Starting Out with C++: Early Objects 5/e slide 28 © 2006 Pearson Education. All Rights Reserved Structure Pointer Operator Simpler notation than (*ptr).member Use the form ptr->member: stuPtr->studentID = 12204; squarePtr->setSide(14); in place of the form (*ptr).member: (*stuPtr).studentID = 12204; (*squarePtr).setSide(14);

Chapter 10 Starting Out with C++: Early Objects 5/e slide 29 © 2006 Pearson Education. All Rights Reserved Dynamic Memory with Objects Can allocate dynamic structure variables and objects using pointers: stuPtr = new Student; Can pass values to constructor: squarePtr = new Square(17); delete causes destructor to be invoked: delete squarePtr;

Starting Out with C++: Early Objects 5/e © 2006 Pearson Education. All Rights Reserved Copyright 2004 Scott/Jones Publishing Starting Out with C++: Early Objects 5 th Edition Chapter 10 Pointers