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

    [C] Definizione di un tipo tramite struct e ritorno puntatore

    Il quesito che pongo è sicuramente più chiaro del titolo del thread

    Ho il seguente sorgente:
    codice:
    struct list {
     int num;
     struct list *p;
    };
    
    struct list *funzione(struct list l);
    
    struct list *funzione(struct list l) {
     return NULL;
    }
    
    int main()
    {
     struct list *l = funzione(l); //<-- ricevo l'errore
     return 0;
    }
    Sostanzialmente sto provando a definire una struttura senza l'uso del typedef per rinominarla (come invece faccio sempre all'uni) in quanto ci sono degli aspetti (come l'uso dell' * davanti al nome della funzione) che non ho mai studiato.

    L'errore mi viene segnalato quando tento di assegnare al puntatore l di tipo struct list il risultato della funzione "funzione(struct list l)" che anch'essa torna un puntatore di tipo struct list ma non comprendo il perchè.
    Cosa sbaglio?


    Grazie

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Queste le correzioni ... le capirai senza altre spiegazioni ...

    codice:
    struct list
    {
    	int num;
    	struct list *p;
    };
    
    struct list *funzione(struct list *l) 
    {
    	return l;
    }
    
    int main()
    {
    	struct list l;
    
    	funzione(&l);
    
    	return 0;
    }
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    726
    Mi metto immediatamente a studiare il codice.

    Grazie!

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    726
    Purtroppo cosi mi da un errore:
    codice:
    struct list *funzione(struct list *l) {
     return l;
    }
    
    nt main()
    {
    	struct list l;
    
    	funzione(&l);
    
    	return 0;
    }
    Se invece lo scrivo cosi non da errori:
    codice:
    struct list *funzione(struct list *l) {
     return l;
    }
    
    int main()
    {
     struct list *l;
     l = funzione(l);
     return 0;
    }

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da Downloader
    Purtroppo cosi mi da un errore:
    Quando hai un errore DEVI sempre dire in dettaglio qual e' ... per semplificare il compito di chi ti vuole aiutare ...

    Se scrivi

    nt main()

    invece di

    int main()

    e' ovvio che avrai un errore ...

    Ma basta leggere cosa ti dice il compilatore per accorgertene ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    726
    Originariamente inviato da oregon
    Quando hai un errore DEVI sempre dire in dettaglio qual e' ... per semplificare il compito di chi ti vuole aiutare ...
    Hai perfettamente ragione. Scusa

    Comunque è strano, adesso ho riscritto il tuo codice in un nuovo file e tutto viene compilato...bohh

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da Downloader
    Hai perfettamente ragione. Scusa
    Ma non mi hai ancora detto qual era l'errore ..

    Comunque è strano, adesso ho riscritto il tuo codice in un nuovo file e tutto viene compilato...bohh
    Se l'hai scritto con attenzione, ci credo che va bene ... se scrivi nt al posto di int non ti devi meravigliare se c'e' qualcosa che non va ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  8. #8
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    726
    Originariamente inviato da oregon
    Ma non mi hai ancora detto qual era l'errore ..
    Non te l'ho detto perché non c'era nessun errore.

    Grazie ancora.

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.