Title: Pointers and Array-Based Lists
1Chapter 3
- Pointers and Array-Based Lists
2Chapter Objectives
- Learn about the pointer data type and pointer
variables - Explore how to declare and manipulate the pointer
variables - Learn about the address of operator and
dereferencing operator - Discover dynamic variables
- Examine how to use the new and delete operators
to manipulate dynamic variables
3Chapter Objectives
- Learn about pointer arithmetic
- Discover dynamic arrays
- Become aware of the shallow and deep copies of
data - Discover the peculiarities of classes with
pointer data members - Explore how dynamic arrays are used to process
lists
4Pointer Data Types and Pointer Variables
- Pointer variable variable whose content is a
memory address - Syntax to declare pointer variable
- dataType identifier
- Address of operator Ampersand,
- Dereferencing operator Asterisk,
5Pointers
6Pointers
7Pointers
8Pointers
9Pointers
- Summary of preceding diagrams
- p, p, and p all have different meanings
- p means the address of p
- p means the content of p
- p means the content pointed to by p, that is
pointed to by the content of memory location
10Pointers
11Pointers
x 50
p x
12Pointers
p 38
13Classes, structs, and Pointer Variables
- The syntax for accessing a class (struct) member
using the operator -gt is - pointerVariableName-gtclassMemberName
- Therefore, the statement
- (studentPtr).gpa 3.9
- is equivalent to the statement
- studentPtr-gtgpa 3.9
14Classes, structs, and Pointer Variables
15Classes, structs, and Pointer Variables
16Syntax to use operator new
- new dataType //to allocate a single
variable - new dataTypeintExp //to allocate an array of
variables
17Syntax to use operator delete
- delete pointer //to destroy a single
dynamic variable - delete pointer //to destroy a
dynamically created array
18Operations on pointer variables
- Assignment operations
- Relational operations
- Limited arithmetic operations
19Functions and Pointers
- void example(int p, double q)
-
- .
- .
- .
-
20Pointers and Function Return Pointers
- int testExp(...)
-
- .
- .
- .
-
- is a pointer of the type int.
21Shallow Versus Deep Copy and Pointers
22Shallow Versus Deep Copy and Pointers
23Shallow Versus Deep Copy and Pointers
- second new int10
- for(int j 0 j lt 10 j)
- secondj firstj
24Classes and Pointers Some Peculiarities
- class pointerDataClass
-
- public
- ...
- private
- int x
- int lenP
- int p
-
- pointerDataClass objectOne
- pointerDataClass objectTwo
25Classes and Pointers Some Peculiarities
26Destructor
27Destructor
- pointerDataClasspointerDataClass()
-
- delete p
-
- class pointerDataClass
-
- public
- pointerDataClass()
- ...
- private
- int x
- int lenP
- int p
-
28Assignment Operator
29Assignment Operator
30Assignment Operator
31Overloading the Assignment Operator
- Function Prototype (to be included in the
definition of the class) - const className operator(const className)
- Function Definition
- const className classNameoperator(const
className rightObject) -
- //local declaration, if any
- if(this ! rightObject) //avoid
self-assignment -
- //algorithm to copy rightObject into
this object -
- //return the object assigned
- return this
-
32Overloading the Assignment Operator
- Definition of function operator
- Only one formal parameter
- Formal parameter generally const reference to
particular class - Return type of function is reference to
particular class
33Copy Constructor
34Copy Constructor
35Copy Constructor
36Copy Constructor
- If a class has pointer data members
- During object declaration, the initialization of
one object using the value of another object
would lead to a shallow copying of the data if
the default memberwise copying of data is allowed - If, as a parameter, an object is passed by value
and the default member-wise copying of data is
allowed, it would lead to a shallow copying of
the data
37Copy Constructor
- The copy constructor automatically executes in
the following situations - When an object is declared and initialized by
using the value of another object - When, as a parameter, an object is passed by
value - When the return value of a function is an object
38Copy Constructor
39Copy Constructor
- General syntax to include the copy constructor in
the definition of a class - className(const className otherObject)
40Classes with Pointer Data Members
- Include destructor in the class
- Overload assignment operator for class
- Include copy constructor
41Overloading Array Index (Subscript) Operator ( )
- Syntax to declare the operator function operator
as a member of a class for nonconstant
arrays - Type operator(int index)
- Syntax to declare the operator function operator
as a member of a class for constant arrays - const Type operator(int index) const
42Array-Based Lists
- List A collection of elements of the same type
- Length of list is number of elements in list
43Operations performed on a list
- Create the list initialized to an empty state
- Determine whether the list is empty
- Determine whether the list is full
- Find the size of the list
- Destroy, or clear, the list
- Determine whether an item is the same as a given
list element
44Operations performed on a list
- Insert an item in the list at the specified
location - Remove an item from the list at the specified
location - Replace an item at the specified location with
another item - Retrieve an item from the list at the specified
location - Search the list for a given item
45UML Diagram of the class arrayListType
46Time Complexity of List Operations
47Chapter Summary
- Pointer data types and variables
- Dynamic variables
- Pointer arithmetic
- Dynamic arrays
- Shallow and deep copying
- Peculiarities of classes with pointer data
members - Processing lists