C++ Programming Text book Chapter 09 .pptMore Related Content
PPT
Programming in Computer Science- Pointers in C++.ppt PPTX
Pf cs102 programming-9 [pointers] PPTX
Computer Programming Lecture numer 05 -- pointers,variablesb PPT
PDF
Chapter 2 - Introduction to Pointer Variables - Student.pdf PPTX
Object Oriented Programming using C++: Ch10 Pointers.pptx PPT
PPTX
Similar to C++ Programming Text book Chapter 09 .ppt
PDF
C++ computer language chapter 4 pointers.pdf PPTX
Introduction to pointers in c plus plus . PPTX
Pointers in C++ object oriented programming PPT
PPTX
C++ Pointer | Introduction to programming PPTX
PDF
Chapter 5 (Part I) - Pointers.pdf PPTX
PDF
(4) cpp automatic arrays_pointers_c-strings PPTX
Lecture 7_Pointer.pptx FOR EDUCATIONAL PURPOSE PDF
PDF
PPT
PPTX
PPTX
Object Oriented Paradighm programming lecture .pptx ODP
PPTX
C++ - UNIT_-_IV.pptx which contains details about Pointers PDF
Pointer in C++_Somesh_Kumar_Dewangan_SSTC PPT
PPT
Pointers_in_c.pptfffgfggdggffffrreeeggttr Recently uploaded
PDF
Milvus Community Meetup SF (Oct 21, 2025) PPTX
"Towards React Server Components in Clojure", Roman Liutikov PDF
Using Copilot with Microsoft Office Apps PDF
Expert Python App Development Company for Modern Enterprises PDF
“Toward Hardware-agnostic ADAS Implementations for Software-defined Vehicles,... PPTX
Agentic AI Solutions and Services | Aeologic PDF
Data Structure - 12 Graph PDF
The End of the Missed Call - How AI Recaptures Lost Leads and Secures ROI PDF
2025 October Patch Tuesday PDF
Bridging epoll and io_uring in Async Rust by Tzu Gwo PDF
Morgenbooster: Navigating Ai Criticism with Systems Thinking PDF
Session 2 - Agentic Orchestration with UiPath Maestro PDF
Application Monitoring and Observability: Elastic Stack Solution for Producti... PDF
Airtable Building Semantic Search with Milvus PPTX
Top Trends in Kubernetes Security: TalosCon 2025 PDF
Getting the Best of TrueDEM – October News & Updates PPTX
"Daily workflows with Cursor IDE", Maksym Anisimov PDF
A fool with a tool is still a fool - Plone Conference 2025 PDF
Agentic AI Guide for Enterprise Use-cases PDF
NDP Act GAID Simplified: From Confusion to Compliance C++ Programming Text book Chapter 09 .ppt
- 1.
Copyright © 2012Pearson Education, Inc.
Copyright © 2012 Pearson Education, Inc.
Chapter 9:
Pointers
- 2.
Copyright © 2012Pearson Education, Inc.
Copyright © 2012 Pearson Education, Inc.
9.1
Getting the Address of a Variable
- 3.
Copyright © 2012Pearson Education, Inc.
Copyright © 2012 Pearson Education, Inc.
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 = -99;
cout << # // prints address
// in hexadecimal
- 4.
Copyright © 2012Pearson Education, Inc.
Copyright © 2012 Pearson Education, Inc.
9.2
Pointer Variables
- 5.
Copyright © 2012Pearson Education, Inc.
Copyright © 2012 Pearson Education, Inc.
Pointer Variables
• Pointer variable : Often just called a
pointer, it's a variable that holds an
address
• Because a pointer variable holds the
address of another piece of data, it "points"
to the data
- 6.
Copyright © 2012Pearson Education, Inc.
Copyright © 2012 Pearson Education, Inc.
Something Like Pointers: Arrays
• We have already worked with something similar
to pointers, when we learned to pass arrays as
arguments to functions.
• For example, suppose we use this statement to
pass the array numbers to the showValues
function:
showValues(numbers, SIZE);
- 7.
Copyright © 2012Pearson Education, Inc.
Copyright © 2012 Pearson Education, Inc.
Something Like Pointers : Arrays
The values parameter, in the showValues
function, points to the numbers array.
C++ automatically stores
the address of numbers in
the values parameter.
- 8.
Copyright © 2012Pearson Education, Inc.
Copyright © 2012 Pearson Education, Inc.
Something Like Pointers:
Reference Variables
• We have also worked with something like pointers
when we learned to use reference variables.
Suppose we have this function:
void getOrder(int &donuts)
{
cout << "How many doughnuts do you want? ";
cin >> donuts;
}
• And we call it with this code:
int jellyDonuts;
getOrder(jellyDonuts);
- 9.
Copyright © 2012Pearson Education, Inc.
Copyright © 2012 Pearson Education, Inc.
Something Like Pointers:
Reference Variables
The donuts parameter, in the getOrder function,
points to the jellyDonuts variable.
C++ automatically stores
the address of
jellyDonuts in the
donuts parameter.
- 10.
Copyright © 2012Pearson Education, Inc.
Copyright © 2012 Pearson Education, Inc.
Pointer Variables
• Pointer variables are yet another way using a
memory address to work with a piece of data.
• Pointers are more "low-level" than arrays and
reference variables.
• This means you are responsible for finding the
address you want to store in the pointer and
correctly using it.
- 11.
Copyright © 2012Pearson Education, Inc.
Copyright © 2012 Pearson Education, Inc.
Pointer Variables
• Definition:
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
- 12.
Copyright © 2012Pearson Education, Inc.
Copyright © 2012 Pearson Education, Inc.
Pointer Variables
• Assigning an address to a pointer variable:
int *intptr;
intptr = #
• Memory layout:
num intptr
25 0x4a00
address of num: 0x4a00
- 13.
Copyright © 2012Pearson Education, Inc.
Copyright © 2012 Pearson Education, Inc.
- 14.
Copyright © 2012Pearson Education, Inc.
Copyright © 2012 Pearson Education, Inc.
The Indirection Operator
• The indirection operator (*) dereferences
a pointer.
• It allows you to access the item that the
pointer points to.
int x = 25;
int *intptr = &x;
cout << *intptr << endl;
This prints 25.
- 15.
Copyright © 2012Pearson Education, Inc.
Copyright © 2012 Pearson Education, Inc.
- 16.
Copyright © 2012Pearson Education, Inc.
Copyright © 2012 Pearson Education, Inc.
9-16
- 17.
Copyright © 2012Pearson Education, Inc.
Copyright © 2012 Pearson Education, Inc.
9.3
The Relationship Between Arrays
and Pointers
- 18.
Copyright © 2012Pearson Education, Inc.
Copyright © 2012 Pearson Education, Inc.
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
- 19.
Copyright © 2012Pearson Education, Inc.
Copyright © 2012 Pearson Education, Inc.
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
- 20.
Copyright © 2012Pearson Education, Inc.
Copyright © 2012 Pearson Education, Inc.
9-20
- 21.
Copyright © 2012Pearson Education, Inc.
Copyright © 2012 Pearson Education, Inc.
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 ( ) as shown in the expressions
- 22.
Copyright © 2012Pearson Education, Inc.
Copyright © 2012 Pearson Education, Inc.
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;
- 23.
Copyright © 2012Pearson Education, Inc.
Copyright © 2012 Pearson Education, Inc.
Array Access
• Conversion: vals[i] is equivalent to
*(vals + i)
• No bounds checking performed on array
access, whether using array name or a
pointer
- 24.
Copyright © 2012Pearson Education, Inc.
Copyright © 2012 Pearson Education, Inc.
From Program 9-7
- 25.
Copyright © 2012Pearson Education, Inc.
Copyright © 2012 Pearson Education, Inc.
9.4
Pointer Arithmetic
- 26.
Copyright © 2012Pearson Education, Inc.
Copyright © 2012 Pearson Education, Inc.
Pointer Arithmetic
• Operations on pointer variables:
9-26
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
- 27.
Copyright © 2012Pearson Education, Inc.
Copyright © 2012 Pearson Education, Inc.
From Program 9-9
- 28.
Copyright © 2012Pearson Education, Inc.
Copyright © 2012 Pearson Education, Inc.
9.5
Initializing Pointers
- 29.
Copyright © 2012Pearson Education, Inc.
Copyright © 2012 Pearson Education, Inc.
Initializing Pointers
• Can initialize at definition time:
int num, *numptr = #
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) ...
- 30.
Copyright © 2012Pearson Education, Inc.
Copyright © 2012 Pearson Education, Inc.
9.6
Comparing Pointers
- 31.
Copyright © 2012Pearson Education, Inc.
Copyright © 2012 Pearson Education, Inc.
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
9-31
- 32.
Copyright © 2012Pearson Education, Inc.
Copyright © 2012 Pearson Education, Inc.
9.7
Pointers as Function Parameters
- 33.
Copyright © 2012Pearson Education, Inc.
Copyright © 2012 Pearson Education, Inc.
Pointers as Function
Parameters
• A pointer can be a parameter
• Works like reference variable to allow change to
argument from within function
• Requires:
1) asterisk * on parameter in prototype and heading
void getNum(int *ptr); // ptr is pointer to an int
2) asterisk * in body to dereference the pointer
cin >> *ptr;
3) address as argument to the function
getNum(&num); // pass address of num to getNum
- 34.
Copyright © 2012Pearson Education, Inc.
Copyright © 2012 Pearson Education, Inc.
Example
void swap(int *x, int *y)
{ int temp;
temp = *x;
*x = *y;
*y = temp;
}
int num1 = 2, num2 = -3;
swap(&num1, &num2);
- 35.
Copyright © 2012Pearson Education, Inc.
Copyright © 2012 Pearson Education, Inc.
(Program Continues)
- 36.
Copyright © 2012Pearson Education, Inc.
Copyright © 2012 Pearson Education, Inc.
- 37.
Copyright © 2012Pearson Education, Inc.
Copyright © 2012 Pearson Education, Inc.
Pointers to Constants
• If we want to store the address of a
constant in a pointer, then we need to
store it in a pointer-to-const.
- 38.
Copyright © 2012Pearson Education, Inc.
Copyright © 2012 Pearson Education, Inc.
Pointers to Constants
• Example: Suppose we have the following
definitions:
const int SIZE = 6;
const double payRates[SIZE] =
{ 18.55, 17.45, 12.85,
14.97, 10.35, 18.89 };
• In this code, payRates is an array of
constant doubles.
9-38
- 39.
Copyright © 2012Pearson Education, Inc.
Copyright © 2012 Pearson Education, Inc.
Pointers to Constants
• Suppose we wish to pass the payRates array to
a function? Here's an example of how we can do
it.
void displayPayRates(const double *rates, int size)
{
for (int count = 0; count < size; count++)
{
cout << "Pay rate for employee " << (count + 1)
<< " is $" << *(rates + count) << endl;
}
}
The parameter, rates, is a pointer to const double.
- 40.
Copyright © 2012Pearson Education, Inc.
Copyright © 2012 Pearson Education, Inc.
Declaration of a Pointer to
Constant
- 41.
Copyright © 2012Pearson Education, Inc.
Copyright © 2012 Pearson Education, Inc.
Constant Pointers
• A constant pointer is a pointer that is
initialized with an address, and cannot
point to anything else.
• Example
int value = 22;
int * const ptr = &value;
- 42.
Copyright © 2012Pearson Education, Inc.
Copyright © 2012 Pearson Education, Inc.
Constant Pointers
- 43.
Copyright © 2012Pearson Education, Inc.
Copyright © 2012 Pearson Education, Inc.
Constant Pointers to Constants
• A constant pointer to a constant is:
– a pointer that points to a constant
– a pointer that cannot point to anything except
what it is pointing to
• Example:
int value = 22;
const int * const ptr = &value;
- 44.
Copyright © 2012Pearson Education, Inc.
Copyright © 2012 Pearson Education, Inc.
Constant Pointers to Constants
- 45.
Copyright © 2012Pearson Education, Inc.
Copyright © 2012 Pearson Education, Inc.
9.8
Dynamic Memory Allocation
- 46.
Copyright © 2012Pearson Education, Inc.
Copyright © 2012 Pearson Education, Inc.
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
- 47.
Copyright © 2012Pearson Education, Inc.
Copyright © 2012 Pearson Education, Inc.
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
for(i = 0; i < SIZE; i++)
*(arrayptr + i) = i * i;
• Program will terminate if not enough memory available to
allocate
- 48.
Copyright © 2012Pearson Education, Inc.
Copyright © 2012 Pearson Education, Inc.
Releasing Dynamic Memory
• Use delete to free dynamic memory:
delete fptr;
• Use [] to free dynamic array:
delete [] arrayptr;
• Only use delete with dynamic memory!
- 49.
Copyright © 2012Pearson Education, Inc.
Copyright © 2012 Pearson Education, Inc.
- 50.
Copyright © 2012Pearson Education, Inc.
Copyright © 2012 Pearson Education, Inc.
- 51.
Copyright © 2012Pearson Education, Inc.
Copyright © 2012 Pearson Education, Inc.
Program 9-14 (Continued)
- 52.
Copyright © 2012Pearson Education, Inc.
Copyright © 2012 Pearson Education, Inc.
Notice that in line 49 the value 0 is assigned to the sales pointer. It is a
good practice to store 0 in a pointer variable after using delete on it. First,
it prevents code from inadvertently using the pointer to access the area of
memory that was freed. Second, it prevents errors from occurring if
delete is accidentally called on the pointer again. The delete operator
is designed to have no effect when used on a null pointer.
- 53.
Copyright © 2012Pearson Education, Inc.
Copyright © 2012 Pearson Education, Inc.
9.9
Returning Pointers from Functions
- 54.
Copyright © 2012Pearson Education, Inc.
Copyright © 2012 Pearson Education, Inc.
Returning Pointers from
Functions
• Pointer can be the return type of a function:
int* newNum();
• The function must not return a pointer to a local
variable in the function.
• A function should only return a pointer:
– to data that was passed to the function as an
argument, or
– to dynamically allocated memory
- 55.
Copyright © 2012Pearson Education, Inc.
Copyright © 2012 Pearson Education, Inc.
From Program 9-15