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++ Pointers

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++ Pointers



Previous
Quiz
Next

C++ pointers are easy and fun to learn. Some C++ tasks are performed more easily with pointers, and other C++ tasks, such as dynamic memory allocation, cannot be performed without them.

As you know every variable is a memory location and every memory location has its address defined which can be accessed using ampersand (&) operator which denotes an address in memory. Consider the following which will print the address of the variables defined −

#include <iostream>

using namespace std;
int main () {
   int  var1;
   char var2[10];

   cout << "Address of var1 variable: ";
   cout << &var1 << endl;

   cout << "Address of var2 variable: ";
   cout << &var2 << endl;

   return 0;
}

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

Address of var1 variable: 0xbfebd5c0
Address of var2 variable: 0xbfebd5b6

What are Pointers?

A pointer is a variable whose value is the address of another variable. Like any variable or constant, you must declare a pointer before you can work with it. The general form of a pointer variable declaration is −

type *var-name;

Here, type is the pointer's base type; it must be a valid C++ type and var-name is the name of the pointer variable. The asterisk you used to declare a pointer is the same asterisk that you use for multiplication. However, in this statement the asterisk is being used to designate a variable as a pointer. Following are the valid pointer declaration −

int    *ip;    // pointer to an integer
double *dp;    // pointer to a double
float  *fp;    // pointer to a float
char   *ch     // pointer to character

The actual data type of the value of all pointers, whether integer, float, character, or otherwise, is the same, a long hexadecimal number that represents a memory address. The only difference between pointers of different data types is the data type of the variable or constant that the pointer points to.

Using Pointers in C++

There are few important operations, which we will do with the pointers very frequently. (a) We define a pointer variable. (b) Assign the address of a variable to a pointer. (c) Finally access the value at the address available in the pointer variable. This is done by using unary operator * that returns the value of the variable located at the address specified by its operand. Following example makes use of these operations −

#include <iostream>

using namespace std;

int main () {
   int  var = 20;   // actual variable declaration.
   int  *ip;        // pointer variable 

   ip = &var;       // store address of var in pointer variable

   cout << "Value of var variable: ";
   cout << var << endl;

   // print the address stored in ip pointer variable
   cout << "Address stored in ip variable: ";
   cout << ip << endl;

   // access the value at the address available in pointer
   cout << "Value of *ip variable: ";
   cout << *ip << endl;

   return 0;
}

When the above code is compiled and executed, it produces result something as follows −

Value of var variable: 20
Address stored in ip variable: 0xbfc601ac
Value of *ip variable: 20

Pointers in C++

Pointers have many but easy concepts and they are very important to C++ programming. There are following few important pointer concepts which should be clear to a C++ programmer −

Sr.No Concept & Description
1 Null Pointers

C++ supports null pointer, which is a constant with a value of zero defined in several standard libraries.

2 Pointer Arithmetic

There are four arithmetic operators that can be used on pointers: ++, --, +, -

3 Pointers vs Arrays

There is a close relationship between pointers and arrays.

4 Array of Pointers

You can define arrays to hold a number of pointers.

5 Pointer to Pointer

C++ allows you to have pointer on a pointer and so on.

6 Passing Pointers to Functions

Passing an argument by reference or by address both enable the passed argument to be changed in the calling function by the called function.

7 Return Pointer from Functions

C++ allows a function to return a pointer to local variable, static variable and dynamically allocated memory as well.

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.