for(; indice()!=0 ; indice() )
te la spiego subito...devi ragionare sul fatto che hai a disposizione una "static int", per cui questo DEVE NECESSARIAMENTE essere il tuo contatore...
ora: ogni qualvolta chiami la funzione viene restituito il numero e decrementata la "p" che MANTIENE IL SUO VALORE fino alla fine del main()...
così facendo gli dici:
1. ENTRA nel for
2. FINCHE' indice() restituisce un valore diverso da zero (ma se la chiamo SCALO di uno, per questo parte da 10 l'assegnazione nella funzione e non da 5)
3. CHIAMA indice() (con conseguente decremento)
spero di essere stato chiaro, comunque provare per credere

Vito
PS
per modifica dell'istruzione for penso si intenda questo, non dichiarare un ciclo infinito e poi dare il break...anche perchè, almeno nella teoria, il C dovrebbe essere un linguaggio orientato alla programmazione strutturata.