Προς το περιεχόμενο

Προσπέλαση πειου λίστας το οποίο είναι struct


paranoid_gr

Προτεινόμενες αναρτήσεις

Παιδία αντιμετωπίζω ένα πρόβλημα.

 

Θέλω να προσπελάσω τα στοιχεία ενός κόμβου μιας λίστας τα οποία όμως είναι δηλωμενα σαν 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)???

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Το curr φαντάζομαι είναι pointer σε listT. Για να προσπελάσεις την price πρέπει να πας curr->item.price;

(το item δεν ειναι pointer για να χρησιμοποιησεις το -> )

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

 

Και κάτι άλλο.Πριν τον τερματισμό του προγραμμάτος άμα θέλω να κανώ αποδέσμευση μνήμης θα πρεπει να κανω και free(item) ή free(curr->item)???

 

free(curr->item);

free(curr);
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Nαι όντως έχει δίκιο..Το curr ειναι pointer και για αυτό χρησιμοποίησα το ->.Δλδ άσχετο που προσπελαυνω μέσα από δείκτη το item επειδή είναι struct type και όχι δέικτης βάζω . 

Επίσης σωστό δεν είναι και το curr->(*item)->price?

 

Eυχαριστώ για τις απαντήσεις σας παιδιά.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Nαι όντως έχει δίκιο..Το curr ειναι pointer και για αυτό χρησιμοποίησα το ->.Δλδ άσχετο που προσπελαυνω μέσα από δείκτη το item επειδή είναι struct type και όχι δέικτης βάζω . 

Επίσης σωστό δεν είναι και το curr->(*item)->price?

 

Eυχαριστώ για τις απαντήσεις σας παιδιά.

Ούτε αυτό που γράφεις γίνεται. Αυτό που μπορείς να χρησιμοποιήσεις είναι : (*curr).item.price

Το * δείχνει τα περιεχόμενα ενός pointer άρα για να μπει μπροστά απο μία μεταβλητή θα πρέπει αυτή να έχει δηλωθεί σαν pointer σε κάτι.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...