WordUp Δημοσ. 19 Ιανουαρίου 2009 Δημοσ. 19 Ιανουαρίου 2009 Όντας newbie με τον προγραμματισμό, ξεκίνησα δειλά-δειλά την C και είμαι αρκετά ικανοποιημένος με τον εαυτό μου για το χρονικό διάστημα που διαβάζω. Περιπλανώμενος στον κυβερνοχώρο, έπεσα πάνω στους Pointers της C, οι οποίοι στην ουσία δείχνουν μια διεύθυνση μνήμης σε μια μεταβλητή (αν θυμάμαι καλά, δεν έχω ασχοληθεί ακόμα). Και ερωτώ τώρα: Ποιά η χρησιμότητα των pointers; Σε ποιές περιπτώσεις μπορούμε να τους χρησιμοποιήσουμε; Γιατί άλλες γλώσσες δε διαθέτουν κάτι αντίστοιχο; Έψαξα λίγο στο google, αλλά επειδή δε φημίζομαι για τα αγγλικά μου, θα'θελα λίγο "σπρώξιμο" (ΥΓ: Είναι όντως τόσο δύσκολοι όσο λένε μερικοί; Ή απλά είναι τεμπέληδες; ) Ευχαριστώ προκαταβολικά
RubiksCube Δημοσ. 19 Ιανουαρίου 2009 Δημοσ. 19 Ιανουαρίου 2009 Οι pointers είναι βασικότατη ιδέα του προγραμματισμού. Οι χρήσεις τους είναι πάρα πολλές. Ενδεικτικά σου αναφέρω ότι για να φτιάξεις μια δομή δεδομένων (λίστα, στίβα, ουρά, γράφο) χρησιμοποιείς pointers. Όλες οι γλώσσες τους χρησιμοποιούν. Απλά μερικές, όπως η java το κάνουν κρυφά από τον χρήστη, κάτι το οποίο είναι αρκετά βολικό, αλλά σε ορισμένες περιπτώσεις μπορεί να περιορίσει τις δυνατότητες της γλώσσας. Αν συνεχίσεις να διαβάζεις θα καταλάβεις σίγουρα την χρησιμότητά τους από μόνος σου.
dark_banishing Δημοσ. 19 Ιανουαρίου 2009 Δημοσ. 19 Ιανουαρίου 2009 Φίλε μου είναι πολύ απλό. Δεν χρειάζεται να χρησιμοποιήσεις pointers αυτή την στιγμή. Μην βιάζεσαι και μην πηδάς κεφάλαια γιατί θα μπερδευτείς. Συνέχισε να μαθαίνεις την c βήμα βήμα. Κάποια στιγμή θα θες να φτιάξεις κάτι που δεν θα μπορείς και τότε είναι που θα καταλάβεις από μόνος σου σε τι χρησιμεύουν. Και δεν είναι ένα πράγμα αλλά πολλά. Θα σου πω ένα απλό παράδειγμα μόνο για να μην σε τρώει η περιέργια. Έστω ότι θες να βάψεις το σπίτι σου. Μπορείς να πάρεις το σπίτι στην πλάτη σου και να το πας στον μπογιατζή. Η μπορείς να δώσεις την διεύθυνση στον μπογιατζή και αυτός βρίσκει το σπίτι και στο βάφει.
mvaggel Δημοσ. 19 Ιανουαρίου 2009 Δημοσ. 19 Ιανουαρίου 2009 Έστω ότι θες να βάψεις το σπίτι σου. Μπορείς να πάρεις το σπίτι στην πλάτη σου και να το πας στον μπογιατζή. Η μπορείς να δώσεις την διεύθυνση στον μπογιατζή και αυτός βρίσκει το σπίτι και στο βάφει. Έγραψε το παράδειγμα. Ειδικά αν συλλογιστεί κανείς πως κάποια πράγματα ΔΕΝ γίνονται, όπως για παράδειγμα να φορτωθείς το σπίτι στη πλάτη. Τότε ΜΟΝΟ με τη διεύθυνση μπορείς να κάνεις δουλειά. Πάντως όπως είπαν και οι προηγούμενοι, μην ασχολείσαι ακόμη με pointers. Όταν θα είσαι έτοιμος θα ασχοληθούν αυτοί μαζί σου.
jtsc21 Δημοσ. 19 Ιανουαρίου 2009 Δημοσ. 19 Ιανουαρίου 2009 Όντας newbie με τον προγραμματισμό, ξεκίνησα δειλά-δειλά την C και είμαι αρκετά ικανοποιημένος με τον εαυτό μου για το χρονικό διάστημα που διαβάζω.Περιπλανώμενος στον κυβερνοχώρο, έπεσα πάνω στους Pointers της C, οι οποίοι στην ουσία δείχνουν μια διεύθυνση μνήμης σε μια μεταβλητή (αν θυμάμαι καλά, δεν έχω ασχοληθεί ακόμα). Και ερωτώ τώρα: Ποιά η χρησιμότητα των pointers; Σε ποιές περιπτώσεις μπορούμε να τους χρησιμοποιήσουμε; Γιατί άλλες γλώσσες δε διαθέτουν κάτι αντίστοιχο; Έψαξα λίγο στο google, αλλά επειδή δε φημίζομαι για τα αγγλικά μου, θα'θελα λίγο "σπρώξιμο" (ΥΓ: Είναι όντως τόσο δύσκολοι όσο λένε μερικοί; Ή απλά είναι τεμπέληδες; ) Ευχαριστώ προκαταβολικά χρηεις των pointers?ΑΠΕΙΡΕΣ πχ 1.περασμα πινακα ως ορισμα σε συναρτηση 2.σχεδον σε ολες τις δομες δεδομενων 3.δυναμικη δεσμευση μνημης 4.πολλα ακομα... δυσκολοι οχι αν καταλαβεις "τι παιζει". η χρηση τους ? τεραστια.
WordUp Δημοσ. 20 Ιανουαρίου 2009 Μέλος Δημοσ. 20 Ιανουαρίου 2009 Ευχαριστώ παιδιά για τις απαντήσεις σας, κατάλαβα τι παίζει πάνω-κάτω. Όχι, δεν είπα να ασχοληθώ από τώρα. Απλά ήθελα να μάθω εγκυκλοπαιδικά
3c0r1z Δημοσ. 20 Ιανουαρίου 2009 Δημοσ. 20 Ιανουαρίου 2009 Δείκτης είναι μια μεταβλητή που περιέχει μια διεύθυνση μιας μεταβλητής. Συχνά οι δείκτες χρησιμοποιούνται σαν παράμετροι σε συναρτήσεις. Ο λόγος είναι οτι, αν σε μια συνάρτηση εκχωρηθουν οι τιμές των μεταβλητών σαν παράμετροι, η συνάρτηση αυτή δημιουργεί αντίγραφα των παραμέτρων και μετά το τέλος της συνάρτησης καταστρέφονται αυτά τα αντίγραφα, με αποτέλεσμα οι οποιεσδήποτε αλλαγές να είναι ουσιαστικά άκυρες στις μεταβλητές που εκχωρήθηκαν στην συνάρτηση. Ενώ αν χρησιμποιηθούν δείκτες οι αλλαγές γίνονται απ'ευθείας στην διεύθυνση που είναι αποθηκευμένη η μεταβλητή.
afnman Δημοσ. 20 Ιανουαρίου 2009 Δημοσ. 20 Ιανουαρίου 2009 Γιατί άλλες γλώσσες δε διαθέτουν κάτι αντίστοιχο; Ολες πλεον οι συγχρονες γλωσσες (VB.NET,JAVA,C#,C++ κτλ) περιεχουν εμμεσα ή αμεσα την εννοια του δείκτη... Στην C,C++ λεγεται pointer, στις Java,VB.NET,C# λεγεται tracking handle......
random Δημοσ. 21 Ιανουαρίου 2009 Δημοσ. 21 Ιανουαρίου 2009 ..μην ασχολείσαι ακόμη με pointers. Όταν θα είσαι έτοιμος θα ασχοληθούν αυτοί μαζί σου. Όχι, δεν είπα να ασχοληθώ από τώρα. Απλά ήθελα να μάθω εγκυκλοπαιδικά καλά, όταν ασχοληθείς... μάθε τους καλά, πριν πας παρακάτω ή απλά σταμάτα εκεί και βρές άλλη γλώσσα πιάσε πχ. VB.net, C#, Java, κλπ.. γιατι περισσότερα απο ενα "hello world" σε C/C++, χωρίς pointers... ΔΕΝ κάνεις.
dop Δημοσ. 25 Ιανουαρίου 2009 Δημοσ. 25 Ιανουαρίου 2009 Κάποιες γλώσσες τους χρησιμοποιούν (C,C++,C#), κάποιες άλλες χρησιμοποιούν αναφορές - κάτι σαν pointers που δεν είναι pointers (C++, C#, Java) και μερικές άλλες δεν έχουν καθόλου pointers (Prolog, Haskell, LISP). Μπορείς να κάνεις τα πάντα και χωρίς pointers. Ουσιαστικά, σε γλυτώνουν από το να αντιγράφεις συνέχεια κομμάτια μνήμης, αν συντρέχουν συγκεκριμένες προϋποθέσεις. Όταν κατανοήσεις τι είναι ο pointer, τότε θα μιλήσουμε και για τις προϋποθέσεις.
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.