Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente bannato
    Registrato dal
    Sep 2012
    Messaggi
    465

    E' possibile creare un array un n elementi (n long)?

    Se n è di tipo long, posso creare un array con n elementi? Sto modificando un programma per renderlo "più capiente" ma Eclipse alla riga di codice seguente:

    Long A[] = new Long[n];

    mi segnala un errore e mi propone questa:

    Long A[] = new Long[(int) n];


  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    613

    Re: E' possibile creare un array un n elementi (n long)?

    Originariamente inviato da peruzzo
    Se n è di tipo long, posso creare un array con n elementi? Sto modificando un programma per renderlo "più capiente" ma Eclipse alla riga di codice seguente:

    Long A[] = new Long[n];

    mi segnala un errore e mi propone questa:

    Long A[] = new Long[(int) n];

    No, non puoi, la dimensione di un array dev'essere un int, come devono essere int gli indici coi quali accedi agli elementi degli array. Comunque significa poter allocare array di oltre due miliardi di elementi, non sono così pochi.

  3. #3
    Utente bannato
    Registrato dal
    Sep 2012
    Messaggi
    465
    Ho capito, è come immaginavo.

    Grazie mille

    Anche in C++ è così?

  4. #4
    Lo standard C++ (attuale) consente qualunque tipo intero per specificare le dimensioni degli array; è (più o meno) implicito che le dimensioni non possono superare quelle massime rappresentabili dal tipo std::size_t, dato che questo per definizione deve poter rappresentare le dimensioni di un qualunque oggetto (è il tipo restituito dall'operatore sizeof).
    Le dimensioni di std::size_t, a loro volta (come accade per molte altre cose in C++), sono "implementation defined", ovvero l'implementazione specifica è libera di sceglierle come meglio crede (a patto che siano rispettati i vincoli dello standard).
    Comunque, in genere, std::size_t ha le medesime dimensioni dei puntatori, e quindi in teoria si possono creare array grandi come tutto lo spazio di indirizzi. In pratica in realtà i limiti "veri" sono molto inferiori, e sono dettati da fattori come dimensione dello stack (per array allocati sullo stack), limiti intrinseci del compilatore (per array allocati staticamente), frammentazione dello spazio di indirizzi e disponibilità di memoria fisica e virtuale (per array allocati dinamicamente).
    Amaro C++, il gusto pieno dell'undefined behavior.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.