Data Structures Using C++1 Chapter 3 Pointers Dr. Liu.

Slides:



Advertisements
Similar presentations
Constructor. 2 constructor The main use of constructors is to initialize objects. A constructor is a special member function, whose name is same as class.
Advertisements

Chapter 9 Pointers and Dynamic Arrays. Overview 9.1 Pointers 9.2 Dynamic Arrays.
Data Structures Using C++1 Chapter 3 Pointers and Array-Based Lists.
Introduction to Programming Lecture 39. Copy Constructor.
C++ Programming: Program Design Including Data Structures, Third Edition Chapter 7: User-Defined Functions II.
C++ Programming: From Problem Analysis to Program Design, Third Edition Chapter 7: User-Defined Functions II.
C++ Programming: Program Design Including Data Structures, Third Edition Chapter 7: User-Defined Functions II.
Chapter 14: Overloading and Templates C++ Programming: Program Design Including Data Structures, Fifth Edition.
Chapter 14: Overloading and Templates
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.
Review on pointers and dynamic objects. Memory Management  Static Memory Allocation  Memory is allocated at compiling time  Dynamic Memory  Memory.
1 Pointers, Dynamic Data, and Reference Types Review on Pointers Reference Variables Dynamic Memory Allocation –The new operator –The delete operator –Dynamic.
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: Overloading.
C++ Programming: Program Design Including Data Structures, Third Edition Chapter 13: Pointers, Classes, Virtual Functions, Abstract Classes, and Lists.
Chapter 15: Operator Overloading
1 Procedural Concept The main program coordinates calls to procedures and hands over appropriate data as parameters.
Shallow Versus Deep Copy and Pointers Shallow copy: when two or more pointers of the same types point to the same memory – They point to the same data.
C++ Programming: Program Design Including Data Structures, Fourth Edition Chapter 14: Overloading and Templates.
Chapter 13: Pointers, Classes, Virtual Functions, and Abstract Classes
CHAPTER 15 POINTERS, CLASSES, AND VIRTUAL FUNCTIONS.
Chapter 14: 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 15: Overloading and Templates.
Data Structures Using C++ 2E Chapter 3 Pointers and Array-Based Lists.
Pointer Data Type and Pointer Variables
Data Structures Using C++ 2E Chapter 3 Pointers and Array-Based Lists.
C++ Programming: From Problem Analysis to Program Design, Fourth Edition Chapter 14: Pointers, Classes, Virtual Functions, and Abstract Classes.
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:
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 © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Starting Out with C++ Early Objects Seventh Edition by Tony Gaddis, Judy.
Overloading Binary Operators Two ways to overload –As a member function of a class –As a friend function As member functions –General syntax Data Structures.
C++ Programming: From Problem Analysis to Program Design, Second Edition1 Objectives In this chapter you will: Learn about the pointer data type and pointer.
C++ Programming: From Problem Analysis to Program Design, Second Edition Chapter 13: Pointers You are not responsible for virtual functions (starting on.
Data Structures Using C++1 Chapter 3 Pointers and Array-Based Lists.
1 CS 132 Spring 2008 Chapter 3 Pointers and Array-Based Lists read p
Data Structures Using C++ 2E Chapter 3 Pointers. Data Structures Using C++ 2E2 Objectives Learn about the pointer data type and pointer variables Explore.
Pointer and Array Lists Chapter 3, Summary CS 244 Brent M. Dingle, Ph.D. Game Design and Development Program Department of Mathematics, Statistics, and.
Chapter 12: Pointers, Classes, Virtual Functions, and Abstract Classes.
 Classes in c++ Presentation Topic  A collection of objects with same properties and functions is known as class. A class is used to define the characteristics.
Copyright 2005, The Ohio State University 1 Pointers, Dynamic Data, and Reference Types Review on Pointers Reference Variables Dynamic Memory Allocation.
CS 376b Introduction to Computer Vision 01 / 23 / 2008 Instructor: Michael Eckmann.
Lecture 3 Classes, Structs, Enums Passing by reference and value Arrays.
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.
Data Structures Using C++1 Chapter 3 Pointers and Array-Based Lists.
C++ Programming: From Problem Analysis to Program Design, Third Edition Chapter 15: Overloading and Templates.
Copyright © 2009 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 14: More About Classes.
Chapter 13: Overloading and Templates. Objectives In this chapter, you will – Learn about overloading – Become familiar with the restrictions on operator.
Lecture 10: 2/17/2003CS148 Spring CS148 Introduction to Programming II Ayman Abdel-Hamid Department of Computer Science Old Dominion University Lecture.
Chapter 3 Pointers and Array-Based Lists Dr. Youssef Harrath
Array in C++ / review. An array contains multiple objects of identical types stored sequentially in memory. The individual objects in an array, referred.
1 Chapter 15-1 Pointers, Dynamic Data, and Reference Types Dale/Weems.
1 // SPECIFICATION FILE (dynarray.h) // Safe integer array class allows run-time specification // of size, prevents indexes from going out of bounds, //
1 CS 132 Spring 2008 Chapter 5 Linked Lists p
Chapter 12: Pointers, Classes, Virtual Functions, Abstract Classes, and Lists.
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.
Learning Objectives Pointers as dada members
Chapter 13: Pointers, Classes, Virtual Functions, and Abstract Classes
Memberwise Assignment / Initialization
Chapter 12: Pointers, Classes, Virtual Functions, and Abstract Classes
Chapter 15 Pointers, Dynamic Data, and Reference Types
Chapter 14: Pointers, Classes, Virtual Functions, and Abstract Classes
Alternate Version of STARTING OUT WITH C++ 4th Edition
Chapter 15 Pointers, Dynamic Data, and Reference Types
Chapter 7: User-Defined Functions II
Standard Version of Starting Out with C++, 4th Edition
Presentation transcript:

Data Structures Using C++1 Chapter 3 Pointers Dr. Liu

Data Structures Using C++2 Chapter 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

Data Structures Using C++3 Chapter 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

Data Structures Using C++4 What are pointers ? Variables that store memory address How to De-reference pointers How to do Pointer assignment How to use address-of operator

Data Structures Using C++5 What are pointers ? abcpabcp Address int *p; int a = 5; p = &a; what is *p now ?; *p = *p + b; int c = *p;

Data Structures Using C++6 Pointer Data Types and Pointer Variables Pointer variable: variable whose content is a memory address Syntax to declare pointer variable: dataType *identifier; e.g. int *p; Address of operator: Ampersand, &, e.g. &a Dereferencing operator: Asterisk, *

Data Structures Using C++7 Pointers Statements: int *p; int num;

Data Structures Using C++8 Pointers

Data Structures Using C++9 Pointers

Data Structures Using C++10 Pointers

Data Structures Using C++11 Pointers 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

Data Structures Using C++12 Pointers

Data Structures Using C++13 Pointers x = 50; p = &x;

Data Structures Using C++14 Pointers *p = 38;

Data Structures Using C++15 Example 1 // This program passes the address of a variable to a // function, which triples the value pointed to. Pointer example demo 1 void triple_it(int *n);

Data Structures Using C++16 Example 2 // This program sorts an array from hightest member // down to lowest, in that order. Pointer example demo 2. void swap(int *p1, int *p2)

Data Structures Using C++17 Example 3 void zero_out_array(int *arr, int n); void zero_out_array(int *p, int n) { while (n-- > 0) { // Do n times: *p = 0; // Assign 0 to element // pointed to by p. p++; // Point to next element. }

Data Structures Using C++18 Classes, structs, and Pointer Variables The syntax for accessing a class (struct) member using the operator -> is pointerVariableName->classMemberName Therefore, the statement (*studentPtr).gpa = 3.9; is equivalent to the statement studentPtr->gpa = 3.9;

Data Structures Using C++19 Classes, structs, and Pointer Variables

Data Structures Using C++20 Classes, structs, and Pointer Variables

Data Structures Using C++21 Syntax to use operator new new dataType; //to allocate a single variable new dataType[intExp]; //to allocate an array of variables

Data Structures Using C++22 Syntax to use operator delete delete pointer; //to destroy a single dynamic variable delete [] pointer; //to destroy a dynamically created array

Data Structures Using C++23 Operations on pointer variables Assignment operations Relational operations Limited arithmetic operations

Data Structures Using C++24 Functions and Pointers void example(int* &p, double *q) {. }

Data Structures Using C++25 Functions and Pointers void example(int* &p, double *q) {. }

Data Structures Using C++26 Pointers and Function Return Pointers int* testExp(...) {. } is a pointer of the type int.

Data Structures Using C++27 #include #define PRINTEM printf("%3d%5d%5d%5d%5d%5d\n", line++, num, x[0],x[1],x[2], ptr-x) int main() { static int x[] = {5,10,15}, lim =99; int *ptr = x, num = 0; int line = 0; printf("LINE num x[0] x[1] x[2] ptr-x \n"); PRINTEM; printf("\n\n"); num = *ptr; PRINTEM; num = *++ptr; PRINTEM; num = *ptr++; PRINTEM; num = ++*ptr; PRINTEM; num = (*ptr)++; PRINTEM; num = ++(*ptr); PRINTEM; num = *ptr + 1; PRINTEM; num = *(ptr + 1); PRINTEM; return 0; }

Data Structures Using C++28 Shallow Versus Deep Copy and Pointers

Data Structures Using C++29 Shallow Versus Deep Copy and Pointers

Data Structures Using C++30 Shallow Versus Deep Copy and Pointers second = new int[10]; for(int j = 0; j < 10; j++) second[j] = first[j];

Data Structures Using C++31 Classes and Pointers: Some Peculiarities class pointerDataClass { public:... private: int x; int lenP; int *p; }; pointerDataClass objectOne; pointerDataClass objectTwo;

Data Structures Using C++32 Classes and Pointers: Some Peculiarities

Data Structures Using C++33 Destructor

Data Structures Using C++34 Destructor pointerDataClass::~pointerDataClass() { delete [ ] p; } class pointerDataClass { public: ~pointerDataClass();... private: int x; int lenP; int *p; };

Data Structures Using C++35 Assignment Operator

Data Structures Using C++36 Assignment Operator

Data Structures Using C++37 Assignment Operator

Data Structures Using C++38 Overloading the Assignment Operator Function Prototype (to be included in the definition of the class): const className& operator=(const className&); Function Definition: const className& className::operator=(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; }

Data Structures Using C++39 Overloading 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

Data Structures Using C++40 Copy Constructor

Data Structures Using C++41 Copy Constructor

Data Structures Using C++42 Copy Constructor

Data Structures Using C++43 Copy 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

Data Structures Using C++44 Copy 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

Data Structures Using C++45 Copy Constructor

Data Structures Using C++46 Copy Constructor General syntax to include the copy constructor in the definition of a class: className(const className& otherObject);

Data Structures Using C++47 Classes with Pointer Data Members Include destructor in the class Overload assignment operator for class Include copy constructor

Data Structures Using C++48 Overloading 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;

Data Structures Using C++49 Chapter Summary Pointer data types and variables Dynamic variables Pointer arithmetic Dynamic arrays Shallow and deep copying Peculiarities of classes with pointer data members