paranoid_gr Δημοσ. 15 Ιανουαρίου 2013 Δημοσ. 15 Ιανουαρίου 2013 Παιδία αντιμετωπίζω ένα πρόβλημα. Θέλω να προσπελάσω τα στοιχεία ενός κόμβου μιας λίστας τα οποία όμως είναι δηλωμενα σαν struct.Για παραδειγμα. typedef struct { char barcode[bARCODESIZE]; double price; } productT; typedef struct node { struct node *next; struct node *prev; productT item; } listT; και εγώ θέλω να κάνω έναν έλεγχο του τύπου if (curr->item->price== price){ ...... } Αλλά ο compiler μου πετάει error: ‘listT’ has no member named ‘price’ Και κάτι άλλο.Πριν τον τερματισμό του προγραμμάτος άμα θέλω να κανώ αποδέσμευση μνήμης θα πρεπει να κανω και free(item) ή free(curr->item)???
bird Δημοσ. 15 Ιανουαρίου 2013 Δημοσ. 15 Ιανουαρίου 2013 Το curr φαντάζομαι είναι pointer σε listT. Για να προσπελάσεις την price πρέπει να πας curr->item.price; (το item δεν ειναι pointer για να χρησιμοποιησεις το -> )
nilosgr Δημοσ. 15 Ιανουαρίου 2013 Δημοσ. 15 Ιανουαρίου 2013 Και κάτι άλλο.Πριν τον τερματισμό του προγραμμάτος άμα θέλω να κανώ αποδέσμευση μνήμης θα πρεπει να κανω και free(item) ή free(curr->item)??? free(curr->item); free(curr);
paranoid_gr Δημοσ. 16 Ιανουαρίου 2013 Μέλος Δημοσ. 16 Ιανουαρίου 2013 Nαι όντως έχει δίκιο..Το curr ειναι pointer και για αυτό χρησιμοποίησα το ->.Δλδ άσχετο που προσπελαυνω μέσα από δείκτη το item επειδή είναι struct type και όχι δέικτης βάζω . Επίσης σωστό δεν είναι και το curr->(*item)->price? Eυχαριστώ για τις απαντήσεις σας παιδιά.
bird Δημοσ. 16 Ιανουαρίου 2013 Δημοσ. 16 Ιανουαρίου 2013 Nαι όντως έχει δίκιο..Το curr ειναι pointer και για αυτό χρησιμοποίησα το ->.Δλδ άσχετο που προσπελαυνω μέσα από δείκτη το item επειδή είναι struct type και όχι δέικτης βάζω . Επίσης σωστό δεν είναι και το curr->(*item)->price? Eυχαριστώ για τις απαντήσεις σας παιδιά. Ούτε αυτό που γράφεις γίνεται. Αυτό που μπορείς να χρησιμοποιήσεις είναι : (*curr).item.price Το * δείχνει τα περιεχόμενα ενός pointer άρα για να μπει μπροστά απο μία μεταβλητή θα πρέπει αυτή να έχει δηλωθεί σαν pointer σε κάτι.
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα