Domanda puntatore

di Anonimizzato15813 il
6 risposte
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

  • 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
  • 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;
  • 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?
  • Non è complicata ... studierai più avanti queste cose ...
  • Ok grazie per ora mi limito a ringraziarti
Devi accedere o registrarti per scrivere nel forum
6 risposte