GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Python Technologies
  • Databases
  • Computer Programming
  • Web Development
  • Java Technologies
  • Computer Science
  • Mobile Development
  • Big Data & Analytics
  • Microsoft Technologies
  • DevOps
  • Latest Technologies
  • Machine Learning
  • Digital Marketing
  • Software Quality

This view

  • Original page
  • New address

GeezerVison is showing www.tutorialspoint.com — C++ Pointer to Pointer (Multiple Indirection)

C++ Tutorial
  • C++ Home
  • C++ Overview
  • C++ Environment Setup
  • C++ Basic Syntax
  • C++ Comments
  • C++ Hello World
  • C++ Omitting Namespace
  • C++ Tokens
  • C++ Constants/Literals
  • C++ Keywords
  • C++ Identifiers
  • C++ Data Types
  • C++ Numeric Data Types
  • C++ Character Data Type
  • C++ Boolean Data Type
  • C++ Variable Types
  • C++ Variable Scope
  • C++ Multiple Variables
  • C++ Input Output Operations
  • C++ Basic Input/Output
  • C++ Cin
  • C++ Cout
  • C++ Manipulators
  • Type System & Data Representation
  • C++ Modifier Types
  • C++ Storage Classes
  • C++ Constexpr Specifier
  • C++ Numbers
  • C++ Enumeration
  • C++ Enum Class
  • C++ References
  • C++ Date & Time
  • C++ Operators
  • C++ Operators
  • C++ Arithmetic Operators
  • C++ Relational Operators
  • C++ Logical Operators
  • C++ Bitwise Operators
  • C++ Assignment Operators
  • C++ sizeof Operator
  • C++ Conditional Operator
  • C++ Comma Operator
  • C++ Member Operators
  • C++ Casting Operators
  • C++ Pointer Operators
  • C++ Operators Precedence
  • C++ Unary Operators
  • C++ Scope Resolution Operator
  • C++ Control Statements
  • C++ Decision Making
  • C++ if Statement
  • C++ if else Statement
  • C++ Nested if Statements
  • C++ switch Statement
  • C++ Nested switch Statements
  • C++ Loop Types
  • C++ while Loop
  • C++ for Loop
  • C++ do while Loop
  • C++ Foreach Loop
  • C++ Nested Loops
  • C++ Jump Statements
  • C++ break Statement
  • C++ continue Statement
  • C++ goto Statement
  • C++ Return Values
  • C++ Strings
  • C++ Strings
  • C++ Loop Through a String
  • C++ String Length
  • C++ String Concatenation
  • C++ String Comparison
  • C++ Functions
  • C++ Functions
  • C++ Multiple Function Parameters
  • C++ Recursive Function
  • C++ Function Overloading
  • C++ Function Overriding
  • C++ Default Arguments
  • C++ Arrays
  • C++ Arrays
  • C++ Multidimensional Arrays
  • C++ Pointer to an Array
  • C++ Passing Arrays to Functions
  • C++ Return Array from Functions
  • C++ Array Decay
  • C++ Structure & Union
  • C++ Structures
  • C++ Unions
  • C++ Pointers
  • C++ Pointers
  • C++ Dereferencing
  • C++ Modify Pointers
  • C++ Smart Pointers
  • C++ Class and Objects
  • C++ Object Oriented
  • C++ Classes & Objects
  • C++ Class Member Functions
  • C++ Class Access Modifiers
  • C++ Static Class Members
  • C++ Static Data Members
  • C++ Static Member Function
  • C++ Inline Functions
  • C++ this Pointer
  • C++ Friend Functions
  • C++ Pointer to Classes
  • C++ Constructors
  • C++ Constructor & Destructor
  • C++ Default Constructors
  • C++ Parameterized Constructors
  • C++ Copy Constructor
  • C++ Constructor Overloading
  • C++ Constructor with Default Arguments
  • C++ Delegating Constructors
  • C++ Constructor Initialization List
  • C++ Dynamic Initialization Using Constructors
  • C++ Destructors
  • C++ Virtual Destructor
  • C++ Inheritance
  • C++ Inheritance
  • C++ Multiple Inheritance
  • C++ Multilevel Inheritance
  • C++ Object-oriented
  • C++ Overloading
  • C++ Polymorphism
  • C++ Abstraction
  • C++ Encapsulation
  • C++ Interfaces
  • C++ Virtual Function
  • C++ Pure Virtual Functions & Abstract Classes
  • C++ Override Specifiers
  • C++ Final Specifiers
  • C++ Design Patterns
  • C++ Creational Design Patterns
  • C++ Singleton Design Pattern
  • C++ Factory Method Design Pattern
  • C++ Abstract Factory Pattern
  • C++ Prototype Design Pattern
  • C++ Structural Design Patterns
  • C++ Facade Design Pattern
  • C++ Iterator Design Pattern
  • C++ Mediator Design Pattern
  • C++ Memento Design Pattern
  • C++ Observer Design Pattern
  • C++ State Design Pattern
  • C++ Strategy Design Pattern
  • C++ Template Method Design Pattern
  • C++ Visitor Design Pattern
  • C++ Behavioural Design Pattern
  • C++ File Handling
  • C++ Files and Streams
  • C++ Reading From File
  • C++ Advanced
  • C++ Exception Handling
  • C++ Dynamic Memory
  • C++ Move Semantics
  • C++ Namespaces
  • C++ Templates
  • C++ Preprocessor
  • C++ Signal Handling
  • C++ Multithreading
  • C++ Web Programming
  • C++ Socket Programming
  • C++ Concurrency
  • C++ Advanced Concepts
  • C++ Lambda Expression
  • C++ nullptr
  • C++ unordered_multiset
  • C++ Chain of Responsibility
  • C++ Structural Design Patterns
  • C++ Adapter Pattern
  • C++ Bridge Pattern
  • C++ Composite Pattern
  • C++ Decorator Pattern
  • C++ Command Pattern
  • C++ Proxy Pattern
  • C++ Useful Resources
  • C++ Questions and Answers
  • C++ Quick Guide
  • C++ Cheatsheet
  • C++ STL Tutorial
  • C++ Standard Library
  • C++ Useful Resources
  • C++ Discussion
  • C++ Online Compiler
Selected Reading
  • UPSC IAS Exams Notes
  • Developer's Best Practices
  • Questions and Answers
  • Online Resume Builder
  • HR Interview Questions
  • Computer Glossary
  • Who is Who

C++ Pointer to Pointer (Multiple Indirection)



Previous
Quiz
Next

A pointer to a pointer is a form of multiple indirection or a chain of pointers. Normally, a pointer contains the address of a variable. When we define a pointer to a pointer, the first pointer contains the address of the second pointer, which points to the location that contains the actual value as shown below.

C++ Pointer to Pointer

A variable that is a pointer to a pointer must be declared as such. This is done by placing an additional asterisk in front of its name. For example, following is the declaration to declare a pointer to a pointer of type int −

int **var;

When a target value is indirectly pointed to by a pointer to a pointer, accessing that value requires that the asterisk operator be applied twice, as is shown below in the example −

#include <iostream>
 
using namespace std;
 
int main () {
   int  var;
   int  *ptr;
   int  **pptr;

   var = 3000;

   // take the address of var
   ptr = &var;

   // take the address of ptr using address of operator &
   pptr = &ptr;

   // take the value using pptr
   cout << "Value of var :" << var << endl;
   cout << "Value available at *ptr :" << *ptr << endl;
   cout << "Value available at **pptr :" << **pptr << endl;

   return 0;
}

When the above code is compiled and executed, it produces the following result −

Value of var :3000
Value available at *ptr :3000
Value available at **pptr :3000
cpp_pointers.htm
Tutorix - AI Tutor
Previous Quiz Next
Advertisements
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.