Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Starting Out with C++ Early Objects Seventh Edition by Tony Gaddis, Judy.

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,
Engineering Problem Solving With C++ An Object Based Approach Chapter 9 Pointers and Creating Data Structures.
Copyright © 2012 Pearson Education, Inc. Chapter 9: Pointers.
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Starting Out with C++ Early Objects Sixth Edition Chapter 10: Pointers by.
Starting Out with C++: Early Objects 5/e © 2006 Pearson Education. All Rights Reserved Copyright 2004 Scott/Jones Publishing Starting Out with C++: Early.
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.
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Starting Out with C++ Early Objects Sixth Edition Chapter 6: Functions by.
1 Pointers, Dynamic Data, and Reference Types Review on Pointers Reference Variables Dynamic Memory Allocation –The new operator –The delete operator –Dynamic.
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.
Pointer Data Type and Pointer Variables
C++ Programming: From Problem Analysis to Program Design, Fourth Edition Chapter 14: Pointers, Classes, Virtual Functions, and Abstract Classes.
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.
Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Starting Out with C++ Early Objects Seventh Edition by Tony Gaddis, Judy.
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 © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 8: Arrays Starting Out with C++ Early Objects Seventh Edition by.
C++ Data Types Structured array struct union class Address pointer reference Simple IntegralFloating char short int long enum float double long double.
CPSC 252 Dynamic Memory Allocation Page 1 Dynamic memory allocation Our first IntVector class has some serious limitations the capacity is fixed at MAX_SIZE.
1 CS 132 Spring 2008 Chapter 3 Pointers and Array-Based Lists read p
Chapter 12: Pointers, Classes, Virtual Functions, and Abstract Classes.
CS102 Introduction to Computer Programming Chapter 9 Pointers.
1 Chapter 11 Structured Data. 2 Topics 10.1 Abstract Data Types 10.2 Combining Data into Structures 10.3 Accessing Structure Members 10.4 Initializing.
Copyright © 2012 Pearson Education, Inc. Chapter 11: Structured Data.
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.
Copyright © 2009 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 14: More About Classes.
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 © 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.
Copyright © 2014, 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Starting Out with C++ Early Objects Eighth Edition by Tony Gaddis,
Copyright © 2014, 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 7. 12: Structures Starting Out with C++ Early Objects Eighth.
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.
Chapter 12: Pointers, Classes, Virtual Functions, Abstract Classes, and Lists.
Pointers Lecture: 5. Topics 1 Pointers and the Address Operator 2 Pointer Variables 3 The Relationship Between Arrays and Pointers 4 Pointer Arithmetic.
Pointers Data Structures CSI 312 CSI Dept. Dr. Yousef Qawqzeh.
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
Standard Version of Starting Out with C++, 4th Edition
Dynamic Memory Allocation
Pointers.
Presentation transcript:

Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Starting Out with C++ Early Objects Seventh Edition by Tony Gaddis, Judy Walters, and Godfrey Muganda Chapter 10: Pointers

Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 10.2 Pointer Variables Pointer variable (pointer): variable that holds an address Pointers provide an alternate way to access memory locations

Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Pointer Variables Definition: int *intptr; Read as: “ intptr can hold the address of an int” or “the variable that intptr points to has type int” Spacing in definition does not matter: int * intptr; 10-3

Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 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 numintptr 25 0x4a00 address of num : 0x4a00

Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 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

Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 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

Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 10.5 Initializing Pointers Can initialize to NULL or 0 (zero) 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 10-7

Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 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 10-8

Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 10.9 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 10-9

Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Dynamic Memory Allocation Can also use new to allocate array arrayPtr = new double[25]; –Program often terminates if there is not sufficient memory Can then use [ ] or pointer arithmetic to access array 10-10

Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 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! 10-11

Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Dynamic Memory Allocation and 2D arrays Use new to allocate array tablePtr = new double[N]; Use for loop and new to allocate array for each row for (int i=0; i< N; i++ tablePtr[i] = new double[M]; Don’t forget to delete rows in a for loop before deleting array 10-12

Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Dangling Pointers and Memory Leaks A pointer is dangling if it contains the address of memory that has been freed by a call to delete. –Solution: set such pointers to 0 as soon as memory is freed. A memory leak occurs if no-longer-needed dynamic memory is not freed. The memory is unavailable for reuse within the program. –Solution: free up dynamic memory after use 10-13

Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 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 10-14

Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 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) an address as argument to the function int * numPtr = new int (5); getNum(numPtr); 10-15

Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 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 10-16

Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Pointers to Class Objects and Structures Can create pointers to objects and structure variables struct Student {…}; class Square {…}; Student stu1; Student *stuPtr = &stu1; Square sq1[4]; Square *squarePtr = &sq1[0]; Need () when using * and. (*stuPtr).studentID = 12204; 10-17

Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 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); 10-18

Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 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; 10-19

Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Selecting Members of Objects Situation: A structure/object contains a pointer as a member. There is also a pointer to the structure/ object. Problem: How do we access the pointer member via the structure/object pointer? struct GradeList { string courseNum; int * grades; } GradeList test1, *testPtr = &test1; 10-20

Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Selecting Members of Objects ExpressionMeaning testPtr->grades Access the grades pointer in test1. This is the same as (*testPtr).grades *testPtr->grades Access the value pointed at by testPtr->grades. This is the same as *(*testPtr).grades *test1.grades Access the value pointed at by test1.grades