Le ++i ou i++ sa change rien niveau perfs même pour les itérateurs standards, le compilateur est assez intelligent. Par contre c'est plus logique d'écrire ++i dans une boucle vu qu'on se sert pas du résultat.
Autre chose aussi, stop confondre tableaux et pointeurs c'est vraiment pas la même chose et ça va embrouiller l'OP. Pour faire clair:
-Un tableau c'est une zone contiguë en mémoire de n éléments (n étant fixé, les tableaux dynamiques c'est encore autre chose).
-Un pointeur c'est une variable qui contient une adresse mémoire.
On peut voir un tableau comme un paté de maisons et un pointeur comme l'adresse d'une maison.
Pourquoi ils se ressemble? Parce que quand on assigne un tableau à un pointeur, le tableau est converti en l'adresse du premier élément(ça s’appelle un decay).
L'allocation dynamique c'est peut être un peu prématuré, a mon avis il faut d'abord voir les structures et expliquer le concept d'adresse et comprendre ce que sont la stack et le heap.