In this context, the * operator is the dereference operator. The intended value will be the place in memory to which it will return the value.
The addition operation is grouped in parentheses so that the compiler knows that the result of this addition will be used for dereference. This is just a case of order of operations.
Keep in mind that the [] operator does the same thing as the dereference operator, because arrays are essentially a kind of pointer variable. If you represent a two-dimensional array in the form of a 2D grid of values ββwith rows and columns, the data is laid out in memory so that each row is strung one after another in sequential order. The first index in the array ( i ) along with the type of the array ( int ) tells the compiler what offset the first place in the string is looking for. The second index in the array ( j ) indicates what the offset in this row looks like.
*(pointerArray[i] + j) basically means: "Find the beginning of the ith data row in pointerArray , and then select the j element of this row and give me that value.
source share