[C++] puntatore a carattere

di il
7 risposte

[C++] puntatore a carattere

Considerando questo frammento ho un problema
    char*s;
    s="sasso";
    cout<<s<<":"<<*s<<endl;
*s risulta = s. Tutto ok, s è un puntatore a carattere e quindi mi stampa giustamente il primo carattere.
Quello che non capisco è perchè cout<<s mi restituisce "sasso"?
Io mi aspetterei che restituisca l'indirizzo esadecimale

7 Risposte

  • Re: [C++] puntatore a carattere

    Succede perché la cout individua il "tipo di puntatore a char" del C e interpreta che deve essere visualizzata la stringa corrispondente. Se ometti il tipo e scrivi

    cout << (void *) s << endl;

    allora viene visualizzato l'indirizzo.
  • Re: [C++] puntatore a carattere

    interpreta che deve essere visualizzata la stringa corrispondente
    Questo è quello che non mi è chiaro. La stringa in C è un array di caratteri. char*p individua l'indirizzo del primo carattere ovvero l'indirizzo del primo byte del vettore di 6 byte in cui è memorizzato sasso. Qua mi mi manca un passaggio...cout<<p stamperebbe tutto l'array di caratteri?
  • Re: [C++] puntatore a carattere

    Stampa tutto l'array fino a trovare il carattere '\0'.
  • Re: [C++] puntatore a carattere

    Cout<<p

    cosa è p ?

    Se è un puntatore ad un array di char, sì. Come farebbe anche questa

    printf("%s", p);
  • Re: [C++] puntatore a carattere

    Però se considero un array di double, questo non accade, ovvero se chiedo di stampare il puntatore a double mi stampa il primo indirizzo e non tutto l'array.
    Quindi è l'array di char che si comporta in modo "anarchico"? Perchè è diverso da un array di double o int?
        double*k;
        double f[]={12.55,1.43,125.78,0,678};
        cout<<f<<endl;
        k=f;
        cout<<k<<endl;
  • Re: [C++] puntatore a carattere

    Non "anarchico" ... succede perché la risoluzione dell'overload dell'ostream seleziona la

    ostream& operator<<(ostream& o, const char *c);

    che prevede esplicitamente la visualizzazione del contenuto dell'array.
  • Re: [C++] puntatore a carattere

    Ah c'è l'overload...ho intuito il concetto..
    grazie,
Devi accedere o registrarti per scrivere nel forum
7 risposte