Καλημερα φιλοι μου, θελω μια βοηθεια σχετικα με c++ που κανουμε στο τει.Μας εκαναν μαθημα στους δεικτες (pointers), εχω καταλαβει οτι δειχνουν σε μια θεση μνημης μιας μεταβλητης και ξερω να τους χρησιμοποιω οσον αφορα την δηλωση τους ,την εκτυπωση στην οθονη της θεσης μνημης οπως και της ιδιας της τιμης της μεταβλητης που αντιπροσωπευουν.Ομως δεν καταλαβαινω γιατι να χρησιμοποιω την τιμη μιας μεταβλητης μεσω δεικτη και οχι απευθειας απο την ιδια της μεταβλητη ?. Ποια η ουσιαστικη χρησιμοτητα τους ?.
Εμφάνιση 1-8 από 8
Θέμα: Δεικτες (pointers)
-
21-01-12, 10:12 Δεικτες (pointers) #1
-
21-01-12, 10:30 Απάντηση: Δεικτες (pointers) #2
Με μια κουβέντα γιατί στη C τα πάντα (οι σύναρτήσεις καθώς δρουν πάνω σε ματαβλητες) γίνονται μέσω κλίσης με αναφορά μνήμης και όχι τιμής στοιχείου. Κινέζικο μπορεί να σου ακούγεται αλλά είναι πρωί ακόμα. (Googlare call by value vs call by reference)
-
21-01-12, 11:08 Απάντηση: Δεικτες (pointers) #3
Ένας από τους λόγους που χρησιμοποιείς pointers είναι όταν θέλεις να περάσεις σαν παράμετρο σε μια function κάτι μεγάλο, π.χ. ένα struct ή ένα object.
Εκεί είναι πολύ πιο γρήγορο να περάσεις τη διεύθυνση ενός struct (ένας pointer είναι το πολύ 8 bytes) από ότι να περάσεις ένα αντίγραφο του struct.
-
21-01-12, 13:15 Απάντηση: Δεικτες (pointers) #4
-
21-01-12, 13:47 Απάντηση: Δεικτες (pointers) #5
-
21-01-12, 14:03 Απάντηση: Δεικτες (pointers) #6
Τέτοιες γλώσσες περνούν συνήθως τα ορίσματα με αναφορά.
Π.χ. στην fortran όλα περνάνε με αναφορά εκτός αν ρητά δηλωθεί ότι πρέπει να περάσουν με τιμή.
Έχει δείκτες βέβαια αλλά εκεί χρειάζονται πολύ λιγότερο.
Π.χ. ο τρόπος να προστευτεί το όρισμα από ακούσια αλλαγή της τιμής του γίνεται με άλλο τρόπο, πολύ πιο εύλογο απ' ότι στην C/C++ :
δηλώνεις ρητά ότι είναι όρισμα εισόδου ή εξόδου.
Οι δείκτες γενικά είναι χρήσιμοι όταν πρέπει να χειριστείς μεταβλητές δίχως να ξέρεις το όνομά τους και
επίσης κατά κόρον στο system programming όπου γίνεται διαχείριση/προσπέλαση της μνήμης και άλλων παρελκόμενων.
-
21-01-12, 14:47 Απάντηση: Δεικτες (pointers) #7
Μπορείς να ρίξεις μια ματιά σε αυτή την εξαιρετική σελίδα: http://www.newty.de/fpt/index.html.
Οι πιο συχνές χρήσεις των δεικτών σε C είναι α) για ας την πούμε προσομοίωση του pass-by-reference στα ορίσματα των συναρτήσεων, β) για callbacks (δες για παράδειγμα την τεκμηρίωση της συνάρτησης qsort() ) γ) για υλοποίηση abstract data types ή generic data types (χρήση του void *) δ) encapsulation μέσω incomplete types.
Xωρίς δείκτες δεν θα μπορούσες να φτιάξεις για παράδειγμα έναν memory viewer/editor (η αριθμητική δεικτών είναι ευλογία σε αυτή την περίπτωση, αλλά οχι μόνο). Ελπίζω το link που σου δίνω να σε βοηθήσει να καταλάβεις τη χρησιμότητα τους.
Στη C++ είναι μικρότερη η σημασία τους, γιατί η γλώσσα παρέχει high-level λειτουργίες που λείπουν από τη C (όπου αναγκαστικά τις υλοποιείς με δείκτες).
Ρίξε μια ματιά και στην ίδια ερώτηση με τη δική σου, σε ένα γνωστό ξένο φόρουμ: http://stackoverflow...hy-use-pointersΤελευταία επεξεργασία από το μέλος migf1 : 21-01-12 στις 14:49. Αιτία: λάθος παράθεση :lol:
-
29-01-12, 11:16 Απάντηση: Δεικτες (pointers) #8
Σας ευχαριστω παιδες , ειστε φοβεροι !!!.
Παρόμοια Θέματα
-
Εργασια με Pointers!!!!
Από milos2404 στο φόρουμ Προγραμματισμός και γλώσσες προγραμματισμούΜηνύματα: 13Τελευταίο Μήνυμα: 17-05-09, 13:16 -
C++ Pointers
Από Atilas στο φόρουμ Προγραμματισμός και γλώσσες προγραμματισμούΜηνύματα: 34Τελευταίο Μήνυμα: 14-05-09, 09:09 -
Segmentation fault σε C pointers
Από artem στο φόρουμ Προγραμματισμός και γλώσσες προγραμματισμούΜηνύματα: 11Τελευταίο Μήνυμα: 02-04-08, 23:38 -
Αποθηκευση πολλων pointers?πως?
Από razorblade1100 στο φόρουμ Προγραμματισμός και γλώσσες προγραμματισμούΜηνύματα: 22Τελευταίο Μήνυμα: 10-08-07, 16:44 -
Πράξεις με pointers στη Delphi
Από WAntilles στο φόρουμ Προγραμματισμός και γλώσσες προγραμματισμούΜηνύματα: 0Τελευταίο Μήνυμα: 28-04-05, 14:09
Bookmarks