Domanda puntatore

di il
6 risposte

Domanda puntatore

Buongiorno,
riuscireste a spiegarmi per piacere coma mai se utilizzo questo codice :

#include <iostream>
using namespace std;



int main() {
  
    int a=10;
    int *punt = &a;
    cout << punt;
    
}
il puntatore "punt" assume il valore della cella di memoria della variabile a, mentre in quest'altro codice in cui è presente un array di caratteri

#include <iostream>
using namespace std;



int main() {
    char array[30]="ciao a tutti";
    char *punt;
    punt= &array[0];
    cout << punt;
}
non viene stampato l'indirizzo della cella a cui punta il puntatore "punt" ma bensì l'intera parola contenuta all'interno dell'array?
Ringrazio in anticipo e mi scuso del disturbo.

6 Risposte

  • Re: Domanda puntatore

    Non ne avevamo parlato qui

    https://www.iprogrammatori.it/forum-programmazione/cplusplus/puntatore-stringa-t27514.html#p8557167

    ?
  • Re: Domanda puntatore

    Si, ma mi era stato detto che il compilatore sa che è un vettore di char e quindi lo visualizza dall'inizio alla fine.
    Non capisco come mai, e soprattutto come si faccia per fare si che funzioni come il primo esempio da me riportato precedentemente.. Non so se mi sono spiegato, vorrei chiedere con quale logica il compilatore non stampa per esempio la locazione di memoria quando si antepone il prefisso "&" ma procede direttamente con la visualizzazione.
    Grazie in anticipo
  • Re: Domanda puntatore

    Dato che incontra un puntatore a char, la cout seleziona un operatore in overload apposito

    template<class _Traits> inline
    basic_ostream<char, _Traits>& operator<<(
    basic_ostream<char, _Traits>& _Ostr,
    const char *_Val)

    usato dalla cout per visualizzare le stringhe C e quindi visualizza la stringa. Per visualizzare il valore cambia il tipo di puntatore scrivendo

    cout << (void *)punt;
  • Re: Domanda puntatore

    Wow, risposta abbastanza complicata per il mio livello di conoscenza del linguaggio ma penso che con l'avanzamento nello studio potrei incontrare questi argomenti, o sbaglio?
  • Re: Domanda puntatore

    Non è complicata ... studierai più avanti queste cose ...
  • Re: Domanda puntatore

    Ok grazie per ora mi limito a ringraziarti
Devi accedere o registrarti per scrivere nel forum
6 risposte