Buonasera a tutti, come da topic vorrei chiedere qual è la differenza, nel linguaggio C, tra un incremento del tipo

a[i]++

e uno di tipo

a[i++]

Quest'ultimo incrementa il valore dell'indice dopo aver eseguito l'operazione, ma del primo non ne ho la minima idea.

Poi, qual è l'operazione che devo eseguire, avendo un'istruzione del tipo:

A[1]=f1(A, *p);

Non capisco cosa vuol dire che quell'indice dell'array debba diventare uguale a quei valori.
*p = A + 3 quindi tecnicamente al terzo valore dell'array, quindi A[2].
A invece dovrebbe essere il primo valore quindi A[0], che ha valore 1 secondo il problema.

Sono domande da studente moooolto in erba, ma non riesco proprio ad arrivarci
Spero di aver indovinato la sezione, grazie per l'aiuto.