Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    569

    lunghezza vettore numerico

    Ciao a tutti.

    Se dichiaro un vettore in questo modo:

    int vet[]={1,2,3,4,5,6,7,8,9,10};

    Esiste una funzione che mi dice da quanti elementi è formato?

    Altrimenti come potrei calcolarlo?

    Grazie

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Puoi scrivere

    int elementi = sizeof(vet)/sizeof(int);

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    569
    Perfetto!

    Ti ringrazio.

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,296

    Moderazione

    Originariamente inviato da labrosan
    Ciao a tutti.
    Ricordo di mettere il linguaggio anche nel titolo, come da Regolamento.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Originariamente inviato da labrosan
    Perfetto!
    Quanto detto da oregon vale solo se il compilatore è in grado di determinare la dimensione del vettore.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  6. #6
    So usando Dev-C++ 4.9.9.2
    Ho inizializzato un vettore unidimensionale con un'istruzione malloc. Vorrei verificare che l'operazione di allocazione dinamica sia andata a buon fine. Scrivo il mio codice come segue, utilizzando il suggerimento di Oregon:
    codice:
    int n=10;
    double *vet;
    vet = (double*) malloc( n * sizeof(double) );
    printf("SIZE: %d\n",sizeof(vet)/sizeof(double));
    La risposta e':
    SIZE: 0

    Perche'?
    Come posso verificare che l'allocazione dinamica sia corretta?

  7. #7
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Originariamente inviato da gulpgiulia
    So usando Dev-C++ 4.9.9.2
    Ho inizializzato un vettore unidimensionale con un'istruzione malloc. Vorrei verificare che l'operazione di allocazione dinamica sia andata a buon fine. Scrivo il mio codice come segue, utilizzando il suggerimento di Oregon:
    codice:
    int n=10;
    double *vet;
    vet = (double*) malloc( n * sizeof(double) );
    printf("SIZE: %d\n",sizeof(vet)/sizeof(double));
    La risposta e':
    SIZE: 0

    Perche'?
    Come posso verificare che l'allocazione dinamica sia corretta?
    Non puoi fare sizeof(vet)/sizeof(double).
    vet è un puntatore. Se vet è NULL vuol dire che la allocazione è fallita (e nota, devi testarlo!). Altrimenti puoi essere certo che la allocazione ha avuto esito positivo. La dimensione però non puoi saperla tramite vet. vet è solo il puntatore al primo byte del vettore. Devi tenerla/gestirla tu in un'altra variabile ('n' nel tuo esempio).

    In generale, non puoi sapere quanto e cosa c'è a partire da un indirizzo contenuto in un puntatore!
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  8. #8
    ... beh, come dice bene la tua firma digitale, io faccio parte della seconda categoria di programmatori...!

    Quindi, riformulo la domanda. Devo inizializzare dinamicamente un vettore, che abbia n componenti. Come posso verificare che la memoria sia stata allocata correttamente, cioe' che il vettore puntato da *vet abbia esattamente n componenti?

  9. #9
    Ti ha già risposto andbin quando ha scritto :
    Originariamente inviato da andbin
    ... Se vet è NULL vuol dire che la allocazione è fallita (e nota, devi testarlo!). Altrimenti puoi essere certo che la allocazione ha avuto esito positivo...
    01010011 01100001 01101101 01110101 01100101 01101100 01100101 01011111 00110111 00110000
    All errors are undocumented features waiting to be discovered.

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Originariamente inviato da gulpgiulia
    ... beh, come dice bene la tua firma digitale, io faccio parte della seconda categoria di programmatori...!

    Quindi, riformulo la domanda. Devo inizializzare dinamicamente un vettore, che abbia n componenti. Come posso verificare che la memoria sia stata allocata correttamente, cioe' che il vettore puntato da *vet abbia esattamente n componenti?
    if(vet)
    {
    // Il vettore e' stato allocato
    }
    else
    {
    // Il vettore NON e' stato allocato
    }

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 © 2024 vBulletin Solutions, Inc. All rights reserved.