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

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

Δημοσ.

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

 

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

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

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

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

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

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

Σύνδεση

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

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