mike.pf Δημοσ. 28 Φεβρουαρίου 2009 Δημοσ. 28 Φεβρουαρίου 2009 Καλησπέρα.Θα ήθελα κάποιος να μου εξηγήσει πώς θα μπορούσα να χρησιμοποιήσω μια δομή δεδομένων την οποία ορίζω με την typedef struct{ { Μέσα σε μία διαδικασία.Χρειάζεται να χρησιμοποίησω δείκτες; Kαι αν ναι πως δηλώνω έναν δείκτη ως προς εγγραφή;
Επισκέπτης Δημοσ. 28 Φεβρουαρίου 2009 Δημοσ. 28 Φεβρουαρίου 2009 Έστω η δομή >typedef struct tree_node{//tree node structure definition. int cost; char letter; struct tree_node *p_left_child, *p_right_child; }tree_node; Για να δηλώσουμε έναν δεικτη προς αυτή τη δομή κάνουμε >tree_node *t_root = NULL; ή εναλλακτικά >typedef tree_node *bt_node; bt_node t_root = NULL; για να περάσουμε μια τέτοια δομή σαν όρισμα σε συνάρτηση, χρησιμοποιουμε τον δείκτη που έχουμε δηλώσει παραπάνω: >void print_tree(tree_node *t_root);<--πρότυπο συνάρτησης print_tree(t_root);<---κλήση συνάρτησης ή κάνοντας χρήση του δεύτερου τρόπου δήλωσης του δείκτη >void print_tree(bt_node t_root);<--πρότυπο συνάρτησης print_tree(t_root);<---κλήση συνάρτησης
mike.pf Δημοσ. 28 Φεβρουαρίου 2009 Μέλος Δημοσ. 28 Φεβρουαρίου 2009 Έστω η δομή >typedef struct tree_node{//tree node structure definition. int cost; char letter; struct tree_node *p_left_child, *p_right_child; }tree_node; Για να δηλώσουμε έναν δεικτη προς αυτή τη δομή κάνουμε >tree_node *t_root = NULL; ή εναλλακτικά >typedef tree_node *bt_node; bt_node t_root = NULL; για να περάσουμε μια τέτοια δομή σαν όρισμα σε συνάρτηση, χρησιμοποιουμε τον δείκτη που έχουμε δηλώσει παραπάνω: >void print_tree(tree_node *t_root);<--πρότυπο συνάρτησης print_tree(t_root);<---κλήση συνάρτησης ή κάνοντας χρήση του δεύτερου τρόπου δήλωσης του δείκτη >void print_tree(bt_node t_root);<--πρότυπο συνάρτησης print_tree(t_root);<---κλήση συνάρτησης Και στις 2 περιπτώσεις η = null χρησιμοποιήται για να δεσμεύσω χώρο στην μνήμη;H απλά για να αρχικοποιήσω την μεταβλητή δείκτη;
Επισκέπτης Δημοσ. 28 Φεβρουαρίου 2009 Δημοσ. 28 Φεβρουαρίου 2009 H null ουσιαστικά σημάνει "ΤΙΠΟΤΑ", άρα πως δεσμεύει κάτι κάτι που σημαίνει τπτ;;; Διάβασε C... Για να δεσμεύσεις χώρο χρησιμοποιείς την συνάρτηση malloc(ή alloca, calloc)... Φαίνεται δε γνωρίζεις βασικά πράγματα...κάτσε διάβασε καλύτερα...
georgemarios Δημοσ. 28 Φεβρουαρίου 2009 Δημοσ. 28 Φεβρουαρίου 2009 για την ακριβεια, 99% των περιπτωσεων, το NULL ειναι το 0 αν ψαξεις στο include path του compiler σου, θα βρεις σε διαφορα headers το παρακατω >#define NULL 0 αρα, οταν ο λεει >tree_node *t_root = NULL; ισοδυναμει με > tree_node *t_root = 0; που σημαινει σε ανθρωπινη γλωσσα "Δηλωνω μια μεταβλητη που μπορει να αποθηκευσει τη διευθυνση μνημης που θα αποθηκευτει μελλοντικα ενα struct τυπου tree_node. Ακομα δεν εχει δημιουργηθει αυτο το στρακτ, δε ξερω ΠΟΥ θα αποθηκευτει και γιαυτο προς το παρον βαζω ενα μηδενικο"
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.