hi karri,
look here the assembly code
Code:
; Line 6
mov BYTE PTR _buf$[ebp], 1
mov BYTE PTR _buf$[ebp+1], 2
mov BYTE PTR _buf$[ebp+2], 3
mov BYTE PTR _buf$[ebp+3], 4 ; the array char buf[10] ={ 1,2,3,4,5,6,9,8};
mov BYTE PTR _buf$[ebp+4], 5
mov BYTE PTR _buf$[ebp+5], 6
mov BYTE PTR _buf$[ebp+6], 9
mov BYTE PTR _buf$[ebp+7], 8
xor eax, eax
mov WORD PTR _buf$[ebp+8], ax
; Line 7
movsx ecx, BYTE PTR _buf$[ebp+6] ; p = (buf+1)[5];
mov DWORD PTR _p$[ebp], ecx;
now you can see here p refers to buf[6] element .
so if arraynext[5] mean *(arraynext + 5)
then (buf + 1)[5] means *(buf + 1 + 5)
means *(buf + 6)