Standard Version of Starting Out with C++, 4th Edition

Slides:



Advertisements
Similar presentations
Copyright © 2014, 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Starting Out with C++ Early Objects Eighth Edition by Tony Gaddis,
Advertisements

Engineering Problem Solving With C++ An Object Based Approach Chapter 9 Pointers and Creating Data Structures.
1 Pointers A pointer variable holds an address We may add or subtract an integer to get a different address. Adding an integer k to a pointer p with base.
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++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.
Pointers: Part I. Why pointers? - low-level, but efficient manipulation of memory - dynamic objects  Objects whose memory is allocated during program.
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.
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.
CS102 Introduction to Computer Programming Chapter 9 Pointers.
Review 1 List Data Structure List operations List Implementation Array Linked List.
Copyright 2004 Scott/Jones Publishing Alternate Version of STARTING OUT WITH C++ 4 th Edition Chapter 6 Functions.
Pointers It provides a way of accessing a variable without referring to its name. The mechanism used for this is the address of the variable.
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.
Dr. Yang, QingXiong (with slides borrowed from Dr. Yuen, Joe) LT:10 Advance Pointer Array, String and Dynamic Memory Allocation CS2311 Computer Programming.
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.
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.
Pointers What is the data type of pointer variables?
Pointers and Dynamic Arrays
Standard Version of Starting Out with C++, 4th Edition
Chapter 9: Pointers.
Lecture 9 Files, Pointers
Chapter 10: Pointers Starting Out with C++ Early Objects
Learning Objectives Pointers Pointer in function call
Pointers and Memory Overview
Pointers and Pointer-Based Strings
Pointer.
Chapter 10: Pointers Starting Out with C++ Early Objects Ninth Edition
Lecture 6 C++ Programming
Chapter 10: Pointers Starting Out with C++ Early Objects
Dynamic Memory Allocation
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
Pointers, Dynamic Data, and Reference Types
Constant pointers and pointers to constants
Chapter 12 Pointers and Memory Management
Chapter 10: Pointers Starting Out with C++ Early Objects Ninth Edition
C++ Pointers and Strings
Pointers and Pointer-Based Strings
COP 3330 Object-oriented Programming in C++
Standard Version of Starting Out with C++, 4th Edition
Dynamic Memory Allocation
Pointers, Dynamic Data, and Reference Types
Pointers.
Pointers.
Presentation transcript:

Standard Version of Starting Out with C++, 4th Edition Chapter 9 Pointers Copyright 2003 Scott/Jones Publishing

Topics 9.1 Getting the Address of a Variable 9.2 Pointer Variables 9.3 The Relationship Between Arrays and Pointers 9.4 Pointer Arithmetic 9.5 Initializing Pointers Chapter 9 slide 2

Topics 9.6 Comparing Pointers 9.7 Pointers as Function Parameters 9.8 Dynamic Memory Allocation 9.9 Returning Pointers from Functions Chapter 9 slide 3

9.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 9 slide 4

9.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 9 slide 5

Pointer Variables Definition: Read as: int *intptr; Read as: “intptr can hold the address of an int” Spacing in definition does not matter: int * intptr; // same as above int* intptr; // same as above Chapter 9 slide 6

Pointer Variables Assignment: Memory layout: int *intptr; intptr = &num; Memory layout: Can access num using intptr and indirection operator *: cout << *intptr << endl; // prints 25 num intptr 25 0x4a00 address of num: 0x4a00 Chapter 9 slide 7

9.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 4 4 7 11 starting address of vals: 0x4a00 Chapter 9 slide 8

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 9 slide 9

Pointers in Expressions Given: int vals[]={4,7,11}, *valptr; 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 9 slide 10

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 9 slide 11

Array Access Conversion: vals[i] is equivalent to *(vals + i) No bounds checking performed on array access, whether using array name or a pointer Chapter 9 slide 12

9.4 Pointer Arithmetic Operations on pointer variables: Operation Example int vals[]={4,7,11}; int *valptr = vals; ++, -- valptr++; // points at 7 valptr--; // now points at 4 +, - (pointer and int) cout << *(valptr + 2); // 11 +=, -= (pointer and int) valptr = vals; // points at 4 valptr += 2; // points at 11 - (pointer from pointer) cout << valptr–val; // difference //(number of ints) between valptr // and val Chapter 9 slide 13

9.5 Initializing Pointers Can initialize at definition time: int num, *numptr = &num; int val[3], *valptr = val; Cannot mix data types: double cost; int *ptr = &cost; // won’t work Can test for an invalid address for ptr with: if (!ptr) ... Chapter 9 slide 14

9.6 Comparing Pointers Relational operators (<, >=, etc.) 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 9 slide 15

9.7 Pointers as Function Parameters A pointer can be parameter Works like reference variable to allow change to argument from within function Requires: asterisk * on parameter in prototype and heading void getNum(int *ptr); // ptr is pointer to an int asterisk * in body to dereference the pointer cin >> *ptr; address as argument to the function getNum(&num); // pass address of num to getNum Chapter 9 slide 16

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 9 slide 17

9.8 Dynamic Memory Allocation Can allocate storage for a variable while program is running Computer returns address of newly allocated variable Uses new operator to allocate memory: double *dptr; dptr = new double; new returns address of memory location Chapter 9 slide 18

Dynamic Memory Allocation Can also use new to allocate array: const int SIZE = 25; arrayPtr = new double[SIZE]; Can then use [] or pointer arithmetic to access array: for(i = 0; i < SIZE; i++) *arrayptr[i] = i * i; or *(arrayptr + i) = i * i; Program will terminate if not enough memory available to allocate Chapter 9 slide 19

Releasing Dynamic Memory Use delete to free dynamic memory: delete fptr; Use [] to free dynamic array: delete [] arrayptr; Only use delete with dynamic memory! Chapter 9 slide 20

9.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 9 slide 21

Standard Version of Starting Out with C++, 4th Edition Chapter 9 Pointers Copyright 2003 Scott/Jones Publishing