Lets say we create an array like:
int a[4]={1,2,3,4};
Now a
is the name of this array and also the pointer points to the first element a[0]
. So when I want to call the elements in the array, I can use a[ i ]
or *(a+i)
.
Now I have a function:
void print_array(int* array, int arraySize){
for(int i=0; i<arraySize; i++){
cout<<*(array+i)<<endl;
cout<<array[i]<<endl;
}
}
When I pass a[4]={1,2,3,4}
into this function using print_array(a,4)
, for the first line of cout
, I fully understand because I use *(a+i)
method to access data and a
is the pointer I passed.
What I can't understand is: since I pass a pointer a
into function, why can I use a
in the format of a[i]
like the second line of cout
? Isn't a
a pointer? If a
is a pointer why does a[i]
work?
This has confused me for a whole day. Any help will be much appreciated!