Ευχαριστώ πολυ για τη βοήθεια σας κυριε Δημήτρης,με βοηθησατε στο επαλ για python,και τωρα στο πανεπιστήμιο χαρη στα βιντεάκια σας καταλαβαινω πολλα πραγματα ακομα και αν δε καταλαβω στη σχολη.
Δάσκαλε χρησιμοποιώ Visual Studio για να τρέξω τα μαθήματα σού και μου έβγαλε ένα warning τύπου [Non-integer passed as parameter 'number' when integer is required in call to 'function': if a pointer value is being passed, %p should be used] το προγραμματακι τρέχει σωστά εκτός από κάτι που παρατήρησα οτι η διεύθυνση κάθε φορά που το τρέχω είναι διαφορετική στη μεταβλητή και τον pointer, φαντάζομαι αυτό είναι και το λογικό να γίνεται επίσης κάποιες φορές η διεύθυνση παίρνει αρνητικές τιμές πολύ μεγάλες αυτό έχει να κάνει μήπως οτι στο σύστημα έχω 32gb ram;
Ναι τέκνον, καλά κάνει και διαμαρτύρεται ο μεταγλωττιστής, το σωστό είναι όταν κάνουμε εκτύπωση κλειδιών να χρησιμοποιούμε τον προσδιοριστή %p αντί για τον προσδιοριστή %d που χρησιμοποιώ γενικά στα βίντεο. * Στον μεταγλωττιστή μου πέρασε γενικά (τότε που έκανα τα βίντεο) και η διεύθυνση (που είναι ένας αριθμός) εκτυπώθηκε χωρίς προβλήματα. * Αντίθετα στον δικό σου, πρέπει να έγινε overflow όταν προσπάθησες να το τυπώσεις ως ακέραιο (για αυτό βγαίνουν αρνητικοί αριθμοί) Συνοψίζοντας, όποτε θες να τυπώσεις μια διεύθυνση να χρησιμοποιείς τον προσδιοριστή %p.
@@psounis βγάζει νόημα τότε γιατί ο Visual Studio επίσης δεν με αφήνει να τρεξω καν προγραμμα με μια ξερη scanf πρέπει να χρησιμοποιώ την "scanf_s" διότι για κάποιο λόγο είναι πιο ασφαλές σε σύγκριση με την απλή
Αν είχαμε έναν τετραγωνικό πίνακα και επρεπε να γεμίσουμε όλα τα στοιχεία του πίνακα(εκτος της κυρίας διαγωνίου) με το άθροισμα των δεικτών πως θα το κάνουμε;
Διαβάζοντας αυτό: ruclips.net/video/nPDvsSDXsrg/видео.html και αυτό: ruclips.net/video/vOC1t0w6WT0/видео.html λογικά θα πρέπει να μπορείς να το λύσεις.
Γεια σου Αλεξ, ναι, είναι λογικό, κάθε φορά κάνεις ένα αίτημα προς το διαχειριστή της μνήμης να σου βρει ένα κομμάτι μνήμης για τα δεδομένα σου, οπότε είναι στην ευχέρεια του να σου επιστρέψει όπου το βρει.
Δασκαλε παρατηρησα οτι εαν τρεξουμε την παρακατω print: int x; int *ptr;
x = 5;
ptr = &x; printf("Address/value of x:%d,%d Pointing/Value/Sizeof of ptr:(%d,%d),SIZE:%d",&x,x,ptr,*ptr,sizeof(ptr)); Επιστρεφει οτι πιανει χωρο 8 bytes. Αυτο λογο του οτι υπολογιζει τον χωρο που πιανει ο δεικτης και η μεταβλητη που ειναι αποθηκευμενη στον δεικτη; Συγνωμη για την χαλια διατυπωση πιο πολυ να το τεσταρω ηθελα.
Στην python οταν εχουμε πχ x = 5 σε μια θέση μνημης και αλλαξουμε την τιμη του x τοτε αλλαζει και η θεση μνημης. Στην C ωστόσο αν αλλάξουμε την τιμή του x η θέση μνήμης παραμένη ίδια. Σωστά ??
Εξαιρετική δουλεια! Μεσα σε 20λ καταλαβα οτι δεν καταλαβα σε 2 βδομαδες πανεπιστημιου!
😀
Ευχαριστώ πολυ για τη βοήθεια σας κυριε Δημήτρης,με βοηθησατε στο επαλ για python,και τωρα στο πανεπιστήμιο χαρη στα βιντεάκια σας καταλαβαινω πολλα πραγματα ακομα και αν δε καταλαβω στη σχολη.
εισαι ωραιοςςςςςςςςς.....ευχαριστουμε!!!!!!
Εάν μεταβάλλουμε την τιμή της ptr (π.χ σε 12), αυτό σημαίνει ότι παύει να είναι δείκτης;
Όχι εξακολουθεί να είναι δείκτης. Δεν συνηθίζεται όμως να καρφώνουμε εμείς τιμές σε δείκτη αριθμούς της αρεσκείας μας.
Ευχαριστώ πολύ
Δάσκαλε χρησιμοποιώ Visual Studio για να τρέξω τα μαθήματα σού και μου έβγαλε ένα warning τύπου
[Non-integer passed as parameter 'number' when integer is required in call to 'function': if a pointer value is being passed, %p should be used]
το προγραμματακι τρέχει σωστά εκτός από κάτι που παρατήρησα οτι η διεύθυνση κάθε φορά που το τρέχω είναι διαφορετική στη μεταβλητή και τον pointer, φαντάζομαι αυτό είναι και το λογικό να γίνεται επίσης κάποιες φορές η διεύθυνση παίρνει αρνητικές τιμές πολύ μεγάλες αυτό έχει να κάνει μήπως οτι στο σύστημα έχω 32gb ram;
Ναι τέκνον, καλά κάνει και διαμαρτύρεται ο μεταγλωττιστής, το σωστό είναι όταν κάνουμε εκτύπωση κλειδιών να χρησιμοποιούμε τον προσδιοριστή %p αντί για τον προσδιοριστή %d που χρησιμοποιώ γενικά στα βίντεο.
* Στον μεταγλωττιστή μου πέρασε γενικά (τότε που έκανα τα βίντεο) και η διεύθυνση (που είναι ένας αριθμός) εκτυπώθηκε χωρίς προβλήματα.
* Αντίθετα στον δικό σου, πρέπει να έγινε overflow όταν προσπάθησες να το τυπώσεις ως ακέραιο (για αυτό βγαίνουν αρνητικοί αριθμοί)
Συνοψίζοντας, όποτε θες να τυπώσεις μια διεύθυνση να χρησιμοποιείς τον προσδιοριστή %p.
@@psounis βγάζει νόημα τότε γιατί ο Visual Studio επίσης δεν με αφήνει να τρεξω καν προγραμμα με μια ξερη scanf πρέπει να χρησιμοποιώ την "scanf_s" διότι για κάποιο λόγο είναι πιο ασφαλές σε σύγκριση με την απλή
Το μέγεθος ενός pointer σε bytes εξαρτάται από τον τύπο δεδομένων που δείχνει κύριε Ψούνη;; Δηλαδή άμα δείχνει σε int θα θέλει και ο pointer 4 bytes;;
οχι ειναι το ιδιο μεγεθος για ολους τους τυπους
Αν είχαμε έναν τετραγωνικό πίνακα και επρεπε να γεμίσουμε όλα τα στοιχεία του πίνακα(εκτος της κυρίας διαγωνίου) με το άθροισμα των δεικτών πως θα το κάνουμε;
Διαβάζοντας αυτό:
ruclips.net/video/nPDvsSDXsrg/видео.html
και αυτό:
ruclips.net/video/vOC1t0w6WT0/видео.html
λογικά θα πρέπει να μπορείς να το λύσεις.
καλησπέρα,δημητρη παρατηρώ ότι κάθε φορά που το τρέχω αλλάζει η τιμή της διεύθυνσης ,είναι σωστό να συμβαίνει αυτό?
Γεια σου Αλεξ, ναι, είναι λογικό, κάθε φορά κάνεις ένα αίτημα προς το διαχειριστή της μνήμης να σου βρει ένα κομμάτι μνήμης για τα δεδομένα σου, οπότε είναι στην ευχέρεια του να σου επιστρέψει όπου το βρει.
Δασκαλε παρατηρησα οτι εαν τρεξουμε την παρακατω print:
int x;
int *ptr;
x = 5;
ptr = &x;
printf("Address/value of x:%d,%d
Pointing/Value/Sizeof of ptr:(%d,%d),SIZE:%d",&x,x,ptr,*ptr,sizeof(ptr));
Επιστρεφει οτι πιανει χωρο 8 bytes.
Αυτο λογο του οτι υπολογιζει τον χωρο που πιανει ο δεικτης και η μεταβλητη που ειναι αποθηκευμενη στον δεικτη;
Συγνωμη για την χαλια διατυπωση πιο πολυ να το τεσταρω ηθελα.
τέκνον είναι μόνο το μέγεθος του χώρου του δείκτη αυτό!
Και ο δείκτης ως μεταβλητή τη διεύθηνση μνήμης έχει? Θα μπορούσε θεωρητικά να φτιάξουμε έναν δείκτη για την μεταβλητή του δείκτη ??
Ακριβώς! Και έτσι έχεις ένα δείκτη σε δείκτη, ή όπως λέγεται διπλός δείκτης. Θα το δούμε αυτό στο μάθημα 12!
Στην python οταν εχουμε πχ x = 5 σε μια θέση μνημης και αλλαξουμε την τιμη του x τοτε αλλαζει και η θεση μνημης.
Στην C ωστόσο αν αλλάξουμε την τιμή του x η θέση μνήμης παραμένη ίδια. Σωστά ??
Σωστά, ναι.
17:06 μπορώ να πω πως τρόμαξα λίγο
13:55 εντααξει το καταλαβαμε
Ευτυχώς γιατί είχα ανησυχία. Είναι σημαντικό!