Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 34
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    636

    [C] gestione stack push e pop

    ciao a tutti
    sul manuale Deitel & Deitel per il C ho trovato un utilizzo dello stack ma non ci ho capito molto

    posto il codice
    questa è la parte dichiarativa
    codice:
    struct stackNode{
        int data;
        struct stackNode *nextPtr;
    };
    fin qui ok...definisce una struttura con 2 campi un per il dato e l'altro come puntatore alla struttura (quindi altro nodo)

    poi crea i sononimi e qui già mi perdo

    codice:
    typedef struct stackNode StackNode;
    typedef StackNode *StackNodePtr;
    in questo modo definisce i nuovi nomi della struttura e del puntatore al nodo?

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Sai a cosa serve la

    typedef


    Se lo sai, capirai facilmente quelle linee, altrimenti ti consiglio di rivederlo sul libro ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    636
    a quanto pare serve per abbreviare il procedimento di dichiarazione di strutture simili.no?

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    636

    Re: [C] gestione stack push e pop

    Originariamente inviato da jurij7
    ciao a tutti
    sul manuale Deitel & Deitel per il C ho trovato un utilizzo dello stack ma non ci ho capito molto

    posto il codice
    questa è la parte dichiarativa
    codice:
    struct stackNode{
        int data;
        struct stackNode *nextPtr;
    };
    fin qui ok...definisce una struttura con 2 campi un per il dato e l'altro come puntatore alla struttura (quindi altro nodo)

    poi crea i sononimi e qui già mi perdo

    codice:
    typedef struct stackNode StackNode;
    typedef StackNode *StackNodePtr;
    in questo modo definisce i nuovi nomi della struttura e del puntatore al nodo?
    cioè qui definisce precedentemente una struttura, con typedef da il nuovo nome StackNode
    e poi ancora un nuovo nome ma come puntatore..non capisco

  5. #5
    Utente di HTML.it L'avatar di KrOW
    Registrato dal
    Feb 2009
    Messaggi
    281
    Ciao . . . Il secondo typedef definisce un sinonimo per un puntatore a StackNode, cioè:
    codice:
    StackNode node;
    StackNode* pointerNode = &node;
    Ma andrebbe bene anche
    StackNodePtr pointerNode = &node;
    C++ 4ever
    496e2062696e6172696f206e6f6e2063692061767265737469 206e656d6d656e6f2020726f7661746f203a29

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    636
    praticamente
    codice:
    typedef StackNode *StackNodePtr;
    mi serve per puntare inizialmente allo stack altrimenti non potrei farlo..giusto?

  7. #7
    Utente di HTML.it L'avatar di KrOW
    Registrato dal
    Feb 2009
    Messaggi
    281
    Si e no. Si perchè StackNodePtr è un sinonimo di un puntatore a StackNode. No perchè potresti usare anche StackNode* al posto di StackNodePtr . . .
    C++ 4ever
    496e2062696e6172696f206e6f6e2063692061767265737469 206e656d6d656e6f2020726f7661746f203a29

  8. #8
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    636
    successivamente come prima istruzione all'interno del main c'è questa
    codice:
    StackNodePtr stackPtr = NULL;
    quindi presumo che stackPtr sia utilizzato per puntare all'inizio dello stack ma a questo punto non era più semplice fare
    codice:
    StackNodePtr = NULL;
    ???

  9. #9
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    StackNodePtr è un "tipo" che equivale a StackNode *

    codice:
    StackNodePtr stackPtr = NULL;
    questa è una dichiarazione di puntatore che punta a null

  10. #10
    Utente di HTML.it L'avatar di KrOW
    Registrato dal
    Feb 2009
    Messaggi
    281
    Noooo . . . StackNodePtr è un SINONIMO DI TIPO non un sinonimo di una variabile . . . Cioè
    codice:
    char  var;
    Dove char è un tipo e var è il nome della variabile . . . puoi creare un sinonimo anche per i tipi "predefiniti" :
    codice:
    typedef char carattere;
    typedef char  *puntCarattere;
    carattere  c = 'a';
    puntCarattere  pc = &c;
    Una variabile di tipo carattere sarà a tutti gli effetti di tipo char e una variabile di tipo puntCarattere sarà a tutti gli effetti di tipo char* . . .
    C++ 4ever
    496e2062696e6172696f206e6f6e2063692061767265737469 206e656d6d656e6f2020726f7661746f203a29

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.