Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    726

    [C] Creazione array tramite calloc

    E' da stamattina che mi sto facendo un po' di esercizi usando solo i puntatori.
    Ora stavo provando a creare una funzioncina che crea tramite la funzione calloc un array di n elementi (passati come pametro), ma qualcosa non va.

    codice:
    int *creaArray(int n  /* numero di elementi del vettore */)
    {
     int *p = NULL; // puntatore, testa dell'array
    
      if (*p /* ??? perchè c'è *?? */ = (int *)  calloc(n,sizeof(int)) == NULL)
       printf("Si è verificato un errore");
    
     return p;
    }
    codice:
    int main()
    {
     int *p = NULL;
     int n = 5;
     p = creaArray();
     ... 
     return 0;
    }
    Mi dareste una mano perpiacere??
    Non ci sono errori sintattici, ma il programma appena avviato va in crash.

    Grazie

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Non so perche' hai scritto in quel modo ... deve essere

    if ((p = (int *)calloc(n,sizeof(int))) == NULL)

    oppure (e' equivalente)

    if (!(p = (int *)calloc(n,sizeof(int))))


    e nella chiamata hai dimenticato il parametro ...

    p = creaArray(n);
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    726
    Cavolo, ho dimenticato di mettere 2 parentesi!
    Che distrattone...


    Grazie

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Veramente l'errore piu' grave era l'asterisco prima della p nella if ...

    if (*p
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    726
    Si, quello però non è stato farina del mio sacco, avevo visto un sorgente fatto in quel modo e ho provato a vedere se in quel modo funzionasse, anche se avevo i miei dubbi (tra l'altro ho segnalato questa cosa nel primo post).

  6. #6

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    726
    Originariamente inviato da menphisx
    manca una chiamata a free()

    Si si l'ho aggiunta.

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