/**************************************************************/ // R. A. Hillyard // pointer04.cpp // November 2001 // // Program to demonstrate the relationship between pointers and arrays // an array name is really a pointer /**************************************************************/ #include<iostream> using namespace std; int const MinSize = 5; int main() { int a[MinSize]; //array of MinSize ints int *ptr1; //pointer to type int int index = 0; //used for loop counter //assign values to array using array name for(index = 0; index < MinSize; index++) { a[index] = 2 * index ; } //assign pointer to point at array // note that I do not need the address of & operator ptr1 = a; //print value of array elements using the pointer with index cout << "First time: \n"; for(index = 0; index < MinSize; index++) { cout << "index = " << ptr1[index] << endl; } //assign value to array elements by dereferencing the pointer for(index = 0; index < MinSize; index++) { *ptr1++ = 3 * index; } ptr1=a; //need to reset pointer to start of a; //print value of array elements by dereferencing the pointer cout << "\nSecond time: \n"; for(index = 0; index < MinSize; index++) { cout << "index = " << *ptr1++ << endl; } //assign value of array elements using array name like a pointer for(index = 0; index < MinSize; index++) { *(a+index) = 2 * index ; //*a+index = 2 * index ; causes compiler error => "not an lvalue" } //print value of array elements using array name like a pointer cout << "\nThird time: \n"; for(index = 0; index < MinSize; index++) { cout << "index = " << *(a+index) << endl; } } /***********************Program Output*************************/ First time: index = 0 index = 2 index = 4 index = 6 index = 8 Second time: index = 0 index = 3 index = 6 index = 9 index = 12 Third time: index = 0 index = 2 index = 4 index = 6 index = 8