As far as I know, array variables are pointers to the first item of array, so for me to access them without a[1], and with + operator, I should increase pointer address by 1 to get second item of the array.
So:
char arr[] = { 't', 's' };
printf("%c", *(&*arr)); // first item
printf("%c - ", *((&*arr) + 1)); // second item
printf("%p ", (&*arr)); // first item's address
printf("%p", (&*arr) + 1); // second item's address
printf("n");
printf("%c", *arr);
printf("%c - ", *(arr + 1));
printf("%p ", arr);
printf("%p", arr + 1);
output:
ts - 0x7ffef48519e6 0x7ffef48519e7
ts - 0x7ffef48519e6 0x7ffef48519e7
Why they are same? In first case, I’m increasing first array item’s address to get second one, but in second one I’m increasing the arr address, which should give me something else.