Visualizzazione dei risultati da 1 a 6 su 6

Visualizzazione discussione

  1. #2
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,589
    Passando (NODO *) se vuoi aggiungere un elemento in testa devi perforza ritornare (NODO *) e assegnarlo nel main.
    Passare (NODO **) ti permette di modificare la testa senza dover necessariamente ritornare (NODO *).

    Se dovessi sviluppare un qualcosa che agisca in tutta sicurezza io farei così:
    codice:
    #include <stdbool.h>
    
    typedef struct {...} NODO;
    typedef NODO *LISTA;
    
    bool funzione(LISTA *l, ...) {
      ...
      NODO *testa = *l;
      ...
      return fail?false:true;
    }
    Almeno concettualmente.
    Ciò anche perché le allocazioni di memoria non sono sempre possibili e, in caso di fallimento, bisogna lasciare il programma in uno stato consistente per lasciare decidere cosa fare al main e permettere il rilascio della memoria allocata.

    Questo è quello che farei io ed è solo un'opinione.
    Avere come valore di ritorno (NODE *) ti da il vantaggio di poter passare direttamente il valore ritornato a qualche altra funzione, ma questa occasione (in C) avviene raramente e in più non può essere in alcun modo sicura perchè, anche volessimo passare come parametro una &flag, poi non avremmo modo di controllarla.
    Ultima modifica di Scara95; 31-12-2013 a 21:31
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

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.