&var_name[0]
can be replaced by
var_name
type *ptr
, then
*ptr+1
means (*ptr)+1
and doesn't imply pointer arithmetic; but
*ptr++
means *(ptr++)
and
does imply pointer arithmetic (i.e.,
increment by sizeof(type)
)
ptr->member
is the same
as (*ptr).member