int main() { int a[]={1,2,3,4,5,6,7,8,9,0}; printf("a = %u , &a = %u ",a,&a); printf("a+1 = %u , &a+1 = %u ",a+1,&a+1); }
how a and &a are internally interpreted?
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
&a
&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)
int (*)[10]
int [10]
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.
a+1
&a+1
2.1m questions
2.1m answers
60 comments
57.0k users