Grazie mille per la spiegazione , mi hai chiarito un grosso dubbio, per quanto banale potesse essere.

Per quanto riguarda la funzione, a cosa serve il puntatore *p all'interno di f1(A, *p) se ciò a cui punta p è stato specificato fuori dalla funzione f1? (cioè A+3)
La funzione f1 mi dà come return a[0] (altra cosa che non mi spiego è la differenza tra a minuscolo e maiuscolo), quindi a sua volta il valore restituito di a[0] deve spostarsi in A[1]?

Chiedo scusa per la confusione...

Edit: ho assegnato il valore di A ad A[1] e così ho risolto l'esercizio... tuttavia non riesco proprio a capire che senso abbia quel puntatore *p = A +3, che ritrovo poi in A[1] = f1 (A, *p)... per come ho lavorato io non mi è stato di nessuna utilità...