Puntatori !!

di il
3 risposte

Puntatori !!

Salve,

Dato questo breve codice

#include <cstdlib>
#include <iostream>

using namespace std;

int main()
{
int v[] ={2,7,4};
int *p=&v[v[0]];
while (*p != 2)
{
(*p)--;
p--;
}
cout << v[0] << " " << v[1] << " " << v[2] << " " ;


system("PAUSE");
return EXIT_SUCCESS;
}

so che l'0utput sarà pari a 2 6 3

Mi spiegate come mai?

3 Risposte

  • Re: Puntatori !!

    Usa il debugger.
    
    int *p=&v[v[0]]; equivale a
    int *p= &v[2];
    ....
    
    (*p)-- decrementa i valori v[2] e v[1] ma non v[0] perche il while(*p != 2) non lo permette.
    
  • Re: Puntatori !!

    Secondo me l'unica spiegazione è che *p alla prima iterazione del while vale 4 per cui entrando nel while modifica sia *p quindi v[2] = 3 che p che poi punterà il valore di v[1].

    Alla seconda iterazione v[1] viene decrementato passando a 6 e si punta v[0]

    Essendo v[0]=2 nn entra nel while per cui in output avremo 2 6 3

    Mi suona strana la gestione del vettore però

    Ero convinto fosse puntato v[0] anzichè v[2] ma con i puntatori sono alle prime armi
  • Re: Puntatori !!

    Int *p= &v[2]; fa puntare p al terzo elemento ovvero al v[2]. Per il resto la tua spiegazione è OK.
Devi accedere o registrarti per scrivere nel forum
3 risposte