Ciao a tutti
ho bisogno di una mano per capire per bene cosa vogliono dire determinate scritture che ho trovato in alcuni codici.
ecco un esempio

codice:
#include <stdio.h>
 int f(int a[], int *b){
if (*b == 0) return 0;
else {
if (*(a+*b) > *b) *a = *b;
(*b)--;
return (*a);
}
 }
 main() {
int e[3] = {2, 2, 2};
int v = 2;
int c = f(e,&v);
printf("%d\n",c);
printf("%d %d %d\n", e[0], e[1], e[2]);
 }
una delle domande sul esercizio è:
Le scritture *(a+*b) e a[*(b)] sono equivalenti tra di loro?

su un altro esempio mi chiede se invece *(a+b)=a[(*b)] sono equivalenti fra loro.
Il concetto dei puntatori è chiaro ma queste due scritture sono a me sconosciute -> *(a+*b) e *(a+b)
quali differenza ci stanno? cosa significano? che valori assumono?
grazie mille per l aiuto