Sizeof() C++

di il
2 risposte

Sizeof() C++

Ciao ragazzi,poco tempo mi sono fatto consigliare da voi un libro sul C++ e ho deciso il migliore.Leggendolo sono arrivato al Sizeof() e mentre facevo esperimenti per capire bene come usarlo sono arrivato a questo punto:

    string User = "Wolt";
    
    cout << "Sizeof(Wolt) >> " << sizeof("Wolt") << "\n\n"; 
    cout << "Sizeof(User) >> " << sizeof(User);
    
    system("pause>null");
    return 0;
Una stringa è formata dai caratteri che occupa + il carattere di terminazione nullo \0.
Il primo esempio da 5 caratteri: 4 (della stringa "Wolt") + \0 (che occupa 1).
Il secondo esempio da 4 caratteri e non restituisce il vero valore di User che sarebbe "Wolt" ma restituisce la dimensione del tipo string.
Il problema è che User è uguale a "Wolt", quindi perché sizeof(User) non è uguale a 5?

2 Risposte

  • Re: Sizeof() C++

    Perché nel primo caso usi una "costante stringa" (una sequenza di caratteri) e ti viene indicata la dimensione della sequenza. Nel secondo il tipo di dato è la classe stringa e quella ti viene indicata.

    La sizeof non conta i caratteri della stringa ma indica quanto è grande il tipo di dato. Nel primo caso il tipo di dato è l'array di char, nel secondo no.
  • Re: Sizeof() C++

    oregon ha scritto:


    Perché nel primo caso usi una "costante stringa" (una sequenza di caratteri) e ti viene indicata la dimensione della sequenza. Nel secondo il tipo di dato è la classe stringa e quella ti viene indicata.

    La sizeof non conta i caratteri della stringa ma indica quanto è grande il tipo di dato. Nel primo caso il tipo di dato è l'array di char, nel secondo no.
    Capito,grazie Oregon
Devi accedere o registrarti per scrivere nel forum
2 risposte