I am learning C programming language, I have just started learning arrays with pointers. I have problem in this question, I hope the that output must be
int main(){
int arr[] = {1,2,3,4,5};
char *ptr = (char *) arr;
printf("%d",*(ptr+4));
return 0;
}
Imagine arr
is stored at the address 100
(totally dumb address). So you have:
arr[0]
is stored at the address 100.
arr[1]
is stored at the address 104. (there's is +4 because of the type int
)
arr[2]
is stored at the address 108.
arr[3]
is stored at the address 112. Etc etc.
Now you're doing char *ptr = (char *) arr;
, so ptr
= 100 (the same as arr
).
The next statement is interesting, specially the second argument of printf
: *(ptr+4)
.
Keep in my mind that ptr
= 100. So ptr + 4
= 104, the same address that arr[1]
! So it will print the value of arr[1]
, which is 2.