Arithmetic can be performed with addresses. Therefore, we can access the elements of array using a pointer plus an offset, as follows:
*(pArray1 + 0) = 1; // first element (zeroth offset)
*(pArray1 + 1) = 2; // second element (first offset)
*(pArray1 + 2) = 3; // third element (second offset)
*(pArray1 + 3) = 4; // fourth element (third offset)
*(pArray1 + 4) = 5; // fifth element (fourth offset)
Since pArray is a pointer, the * go-to address of notation must be used to access the value at the address of that pointer. In the second through fifth elements, we must first add an offset value and then go to that computed address. Note that we must use ( and ) to properly calculate the address before assigning the value there. Also, note that *(pArray1 + 0) is identical to the abbreviated version, *pArray1.
You may have already noticed how adding an offset to a base address (pointer) is very similar to using an array name...