The difference is the type. If you do pointer arithmetic. Try the values of : intarr + 1 &intarr[0] + 1 &intarr[0][0] + 1