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)