Ragazzi,
questo listato deve stampare a video un vettore allocato dinamicamente con dei numeri, da scegliere tra unsigned short e float.
Vorrei capire perchè sono stati inseriti su questa riga
codice:
case 0: cout << *((unsigned short *)v+i)<< endl;
due puntatori e l'uso della parentesi tonda solo per unsigned short *,su questo ho pensato che per la precedenza tra operatori avrebbe preso solo unsigned short *v(senza considerare la i), ditemi voi se è giusto ,e poi perchè ha usato quell'altro puntatore prima di unsigned short?

Listati:
codice:
void leggi_vettore(void * & v, int n, int t) {
    
    switch (t) {
        case 0: v= new unsigned short [n]; break;
        case 1: v= new float [n];break;
    }  
    
    cout << "\n inserisci gli elementi del vettore: " << endl;
    for(int i=0; i<n; i++) // basta un solo ciclo...
    switch (t) {
        case 0: 
           //  for(int i=0; i<n; i++) ...in alternativa
             cin >> *((unsigned short *)v+i); break;
        case 1: 
           // for(int i=0; i<n; i++) ...in alternativa
             cin >> *((float *)v+i);break;
    }      
}   
 
void stampa_vettore(void* v, int n, int t){
    cout << "\n stampa degli elementi del vettore: " << endl;
    for(int i=0; i<n; i++)
    switch (t) {
        case 0: cout << *((unsigned short *)v+i)<< endl;
                break;
        case 1: cout << *((float *)v+i)<< endl;
                break;
    }