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 an Array

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 an Array



Previous
Quiz
Next

It is most likely that you would not understand this chapter until you go through the chapter related C++ Pointers.

So assuming you have bit understanding on pointers in C++, let us start: An array name is a constant pointer to the first element of the array. Therefore, in the declaration −

double balance[50];

balance is a pointer to &balance[0], which is the address of the first element of the array balance. Thus, the following program fragment assigns p the address of the first element of balance −

double *p;
double balance[10];

p = balance;

It is legal to use array names as constant pointers, and vice versa. Therefore, *(balance + 4) is a legitimate way of accessing the data at balance[4].

Once you store the address of first element in p, you can access array elements using *p, *(p+1), *(p+2) and so on. Below is the example to show all the concepts discussed above −

#include <iostream>
using namespace std;
 
int main () {
   // an array with 5 elements.
   double balance[5] = {1000.0, 2.0, 3.4, 17.0, 50.0};
   double *p;

   p = balance;
 
   // output each array element's value 
   cout << "Array values using pointer " << endl;
   
   for ( int i = 0; i < 5; i++ ) {
      cout << "*(p + " << i << ") : ";
      cout << *(p + i) << endl;
   }
   cout << "Array values using balance as address " << endl;
   
   for ( int i = 0; i < 5; i++ ) {
      cout << "*(balance + " << i << ") : ";
      cout << *(balance + i) << endl;
   }
 
   return 0;
}

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

Array values using pointer
*(p + 0) : 1000
*(p + 1) : 2
*(p + 2) : 3.4
*(p + 3) : 17
*(p + 4) : 50
Array values using balance as address
*(balance + 0) : 1000
*(balance + 1) : 2
*(balance + 2) : 3.4
*(balance + 3) : 17
*(balance + 4) : 50

In the above example, p is a pointer to double which means it can store address of a variable of double type. Once we have address in p, then *p will give us value available at the address stored in p, as we have shown in the above example.

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.