int main()
{
int a[]={1,2,3,4,5,6,7,8,9,0};
printf(\"a = %u , &a = %u\\n\",a,&a);
printf(\"a+1 = %u , &a+1 = %u\\n\",a+1,&a+1);
}
Both statements print out addresses and are probably meant to explain pointer arithmetic.
a
and &a
are NOT the same, they have different types, but hold the same memory address.
&a
is of type int (*)[10]
(which acts like a pointer to an array)
a
is of type int [10]
(which acts like a pointer to a single element)
So when you add 1 keep those types in mind. The pointer will be offset by the size of the type that the address contains. a+1
offsets by the size of int, i.e. to the second element in the array. &a+1
offsets completely past the whole array.