Functionally, they are identical.
Semantically, the pointer dereference says “Here’s a thing, but I really care about the thing X
spaces over”, while the array access says “Here’s a bunch of things, I care about the Xth
one.”
In most cases, I would prefer the array form.