s->marks
is a pointer to the first element of an array of double
.
s->marks + i
is a pointer to the i
th element.
*(s->marks + i)
dereferences that to give the double
element itself.
s->marks[i]
is a convenient way to write *(s->marks + i)
. It includes the dereference operation, so there's no need for another one.