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

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

Ερώτηση

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

 

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

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες

4 απαντήσεις σε αυτή την ερώτηση

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

  • 0

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

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

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

 

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

 

free(curr->item);

free(curr);

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

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

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

 

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

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

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

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

 

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

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

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

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες

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

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

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

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

Εγγραφείτε για έναν νέο λογαριασμό

Σύνδεση

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

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

Χρήσιμες πληροφορίες

Με την περιήγησή σας στο insomnia.gr, αποδέχεστε τη χρήση cookies που ενισχύουν σημαντικά την εμπειρία χρήσης.