Εισαγωγή στον Προγραμματισμό με C++

Σχετικά έγγραφα
Δομημένος Προγραμματισμός

Εισαγωγή στον Προγραμματισμό με C++

Δομημένος Προγραμματισμός

ΥΠΟΛΟΓΙΣΤΕΣ ΙI. Άδειες Χρήσης. Δείκτες Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

Εισαγωγή στον Προγραμματισμό με C++

Εισαγωγή στον Προγραμματισμό με C++

Η γλώσσα προγραμματισμού C

Δομημένος Προγραμματισμός

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Συστήματα Αυτομάτου Ελέγχου. Ενότητα Α: Γραμμικά Συστήματα

Εισαγωγή στον Προγραμματισμό με C++

Προγραμματισμός H/Y Ενότητα 4: Δείκτες. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

ΥΠΟΛΟΓΙΣΤΕΣ ΙI. Άδειες Χρήσης. Τύποι δεδομένων, μεταβλητές, πράξεις. Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

Δομημένος Προγραμματισμός

Δομημένος Προγραμματισμός

Εισαγωγή στον Προγραμματισμό με C++

Εισαγωγή στον Προγραμματισμό με C++

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

Εισαγωγή στον δομημένο προγραμματισμό

Δομημένος Προγραμματισμός (ΤΛ1006)

Δομημένος Προγραμματισμός (ΤΛ1006)

Προγραμματισμός ΙI (Θ)

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

Η γλώσσα προγραμματισμού C

ΣΤΑΤΙΣΤΙΚΗ ΕΠΙΧΕΙΡΗΣΕΩΝ

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

Προγραμματισμός Ι. Δείκτες. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Δομημένος Προγραμματισμός

Εισαγωγή στον Προγραμματισμό με C++

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ. Τι περιλαμβάνει μια μεταβλητή; ΔΕΙΚΤΕΣ. Διεύθυνση μεταβλητής. Δείκτης

Αντικειμενοστραφής Προγραμματισμός

Δομημένος Προγραμματισμός

ΜΑΘΗΜΑΤΙΚΑ ΓΙΑ ΟΙΚΟΝΟΜΟΛΟΓΟΥΣ

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Εισαγωγή στον Προγραμματισμό

Οντοκεντρικός Προγραμματισμός

Στοιχειώδης προγραμματισμός σε C++

ΣΤΑΤΙΣΤΙΚΗ ΕΠΙΧΕΙΡΗΣΕΩΝ

Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

Προγραμματισμός Η/Υ (ΤΛ2007 )

Υδραυλικά & Πνευματικά ΣΑΕ

Ειδικά Θέματα Προγραμματισμού

Η γλώσσα προγραμματισμού C

Διαδικασιακός Προγραμματισμός

Πληροφορική. Εργαστηριακή Ενότητα 5 η : Μαθηματικοί Τύποι. Ι. Ψαρομήλιγκος Τμήμα Λογιστικής & Χρηματοοικονομικής

Στατιστική Επιχειρήσεων Ι

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

Λογιστικές Εφαρμογές Εργαστήριο

Διαδικασιακός Προγραμματισμός

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Εισαγωγή στον Προγραμματισμό. Ενότητα 4: Έλεγχος Ροής. Κ.

Προγραμματισμός H/Y Ενότητα 6: Δομές (structures) Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Προγραμματισμός Η/Υ (ΤΛ2007 )

Ηλεκτρονικοί Υπολογιστές

Δομημένος Προγραμματισμός

Εισαγωγή στην Πληροφορική & τον Προγραμματισμό

Οντοκεντρικός Προγραμματισμός

ΣΤΑΤΙΣΤΙΚΗ ΕΠΙΧΕΙΡΗΣΕΩΝ

ΓΡΑΜΜΙΚΟΣ & ΔΙΚΤΥΑΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Πληροφορική. Εργαστηριακή Ενότητα 1 η : Εισαγωγή στα Λογιστικά Φύλλα με το MS Excel. Ι. Ψαρομήλιγκος Τμήμα Λογιστικής & Χρηματοοικονομικής

Προγραμματισμός Η/Υ. Ενότητα 2β: Εισαγωγή στη C (Μέρος Δεύτερο)

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

Δομημένος Προγραμματισμός

ΜΑΘΗΜΑΤΙΚΑ ΓΙΑ ΟΙΚΟΝΟΜΟΛΟΓΟΥΣ

{ int a = 5; { int b = 7; a = b + 3;

Πληροφορική. Εργαστηριακή Ενότητα 3 η : Επεξεργασία Κελιών Γραμμών & Στηλών. Ι. Ψαρομήλιγκος Τμήμα Λογιστικής & Χρηματοοικονομικής

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

Διαδικαστικός Προγραμματισμός

Εισαγωγή στον Προγραμματισμό με C++

Εισαγωγή στον Προγραµµατισµό «C»

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Πληροφορική. Εργαστηριακή Ενότητα 8 η : Γραφήματα

Δομημένος Προγραμματισμός

3.1 Αριθμητικοί και Λογικοί Τελεστές, Μετατροπές Τύπου (Casting)

Πληροφορική. Ενότητα 4 η : Κωδικοποίηση & Παράσταση Δεδομένων. Ι. Ψαρομήλιγκος Τμήμα Λογιστικής & Χρηματοοικονομικής

Προγραμματισμός Ι (ΗΥ120)

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

Δομημένος Προγραμματισμός

Υπολογιστές Ι. Άδειες Χρήσης. Τύποι δεδομένων. Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Τεχνικό Σχέδιο

ΣΤΑΤΙΣΤΙΚΗ ΕΠΙΧΕΙΡΗΣΕΩΝ

ΣΤΑΤΙΣΤΙΚΗ ΕΠΙΧΕΙΡΗΣΕΩΝ

Ενότητα 1 Διάλεξη 2β

ΜΑΘΗΜΑΤΙΚΑ ΓΙΑ ΟΙΚΟΝΟΜΟΛΟΓΟΥΣ

Τίτλος Μαθήματος: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ

Αντικειμενοστραφής Προγραμματισμός

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα ΕΠΕΞΕΡΓΑΣΙΑ ΕΙΚΟΝΑΣ. Ενότητα 3: Αποκατάσταση Εικόνας.

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

Εισαγωγή στους Ηλεκτρονικούς Υπολογιστές. 6 ο Μάθημα. Λεωνίδας Αλεξόπουλος Λέκτορας ΕΜΠ. url:

Δομημένος Προγραμματισμός

3 ο Εργαστήριο Μεταβλητές, Τελεστές

ΑΡΧΕΣ ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ

Δομημένος Προγραμματισμός

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Εισαγωγή στον Προγραμματισμό. Ενότητα 3: Είσοδος και Έξοδος Δεδομένων

Αντικειμενοστραφείς Γλώσσες Προγραμματισμού C++ / ROOT

Ηλεκτρονικοί Υπολογιστές

Προγραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

8. ΠΙΝΑΚΕΣ (ARRAYS) (Πρόχειρο σχέδιο - Μαθήµατος 5) //26. Array.cpp #include <iostream> using namespace std;

Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

ΒΟΗΘΗΤΙΚΕΣ ΣΗΜΕΙΩΣΕΙΣ

Transcript:

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Εισαγωγή στον Προγραμματισμό με C++ Ενότητα # 5: Pointers Κωνσταντίνος Κουκουλέτσος Τμήμα Αυτοματισμού

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς. 2

Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα» έχει χρηματοδοτήσει μόνο την αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. 3

Σκοποί Ενότητας Κατανόηση της έννοιας των pointers Εμπέδωση της χρήσης των pointers 4

Περιεχόμενα Διευθύνσεις και μνήμη Δείκτες Πράξεις με δείκτες NULL Πίνακες & δείκτες Παραδείγματα 5

Διευθύνσεις και μνήμη Η μνήμη αποτελείται από θέσεις (cells) στις οποίες αποθηκεύονται δεδομένα. Κάθε θέση έχει την δική του διεύθυνση. Το μέγεθος κάθε κελιού είναι 1 byte. 6

Δείκτες (Pointers) Μία μεταβλητή καταλαμβάνει μία ή περισσότερες θέσεις στην μνήμη. Οι θέσεις (bytes) που καταλαμβάνει μία μεταβλητή εξαρτάται από τον τύπο του δεδομένου. Στην Dev C++ για τους γνωστούς τύπους οι θέσεις είναι : char int float double 1 byte 4 bytes 4 bytes 8 bytes Επειδή η μεταβλητή καταλαμβάνει συνήθως περισσότερα από ένα byte σαν διεύθυνση της μεταβλητής θεωρείται ότι είναι η διεύθυνση του πρώτου byte που καταλαμβάνει η μεταβλητής Για να υπολογιστεί το μέγεθος μίας μεταβλητής χρησιμοποιώ την συνάρτηση sizeof πχ. cout<<sizeof(int) // εμφανίζει τον αριθμό 4 7

Ορισμός Δείκτη Ο δείκτης είναι μία μεταβλητή που σαν περιεχόμενο έχει μία διεύθυνση της μνήμης. Πχ. int a=11; int * pa; H pa είναι μία μεταβλητή που σαν περιεχόμενο έχει μία διεύθυνση μίας ακεραίας μεταβλητής (δηλαδή δείχνει μία μεταβλητής ακέραιου τύπου). Για να δώσω μία τιμή στο pa χρησιμοποιώ τον τελεστή & που ονομάζεται τελεστής διεύθυνσης (reference operator) pa=&a; Η pa έχει σαν περιεχόμενο την διεύθυνση της μεταβλητής a (&a = address of a) 8

Χρήση Δείκτη Επειδή με τον δείκτη έχω πρόσβαση στην διεύθυνση μίας μεταβλητής μπορώ να έχω και πρόσβαση στο περιεχόμενο της διεύθυνσης αυτής δηλαδή στον αριθμό που αποθηκεύεται στην μεταβλητή που εχει αυτήν την διεύθυνση Αυτό γίνεται με το τελεστή * που μέχρι τώρα χρησιμοποιείται για πολλαπλασιασμό αλλά και στην δήλωση δείκτη Το σύμβολο * χρησιμοποιείται επίσης και σαν τελεστής έμμεσης αναφοράς (dereference operator, indirection operator) για την από-αναφοροποιηση (dereferencing) στην τιμή της μεταβλητής που δείχνει ένας δείκτης, δηλαδή o τελεστής επιτρέπει την έμμεση αναφορά σε τιμή μίας μεταβλητής. Με το * εμφανίζεται η τιμή που βρίσκεται στην διεύθυνση που δείχνει (περιέχει ο δείκτης) δηλαδή: int a=11; int * pa=&a; cout<<*pa //εμφανίζει τον αριθμό 11 9

Παράδειγμα 1 Παρατηρήστε ότι : οι τιμές του a και *pa είναι οι ίδιες και το περιεχόμενο του δείκτη pa που είναι μια διεύθυνση συμπίπτει με την διεύθυνση που έχει αποθηκευτεί η a. H διεύθυνση που έχει αποθηκευτεί η μεταβλητή a εμφανίζεται με το &a. 10

Παρατηρήσεις Για τον ορισμό του ενός δείκτη τα παρακάτω είναι ισοδύναμα. int* a; int * a; int *a; Για τον ορισμό περισσοτέρων του ενός δεικτών ο τελεστής * πρέπει να επαναλαμβάνεται: int * a,* b,* c, d; Όλες οι μεταβλητές εκτός από την d είναι τύπου δείκτη, ενώ η d είναι ακέραια μεταβλητή. Ένας δείκτης είναι σαν μία ακεραίου τύπου μεταβλητή. Απλά σαν τιμή έχουν ένα 16-δικό αριθμό που αναφέρεται σε μία διεύθυνση όπου περιέχεται ένας αριθμός του ιδίου τύπου με τον τύπο του δείκτη. Αν έχω δύο δείκτες πχ int * pa, * pb τότε η εκχώρηση pa=pb σημαίνει ότι ο δείκτης pa έχει την ίδια τιμή με το δείκτη pb δηλαδή και οι δύο δείκτες δείχνουν προς την ιδία διεύθυνση, αυτή που δείχνει ο pb 11

Παράδειγμα 2 12

Σύνοψη Η δήλωση ενός δείκτη γίνεται με int * pa, *pb; float * pd; Αφού δηλωθούν οι μεταβλητές η αρχικοποίηση των δεικτών γίνεται με εκχωρήσεις διευθύνσεων pa=&a ; pb=&b; pd=&d; Με την εντολή pa=pb ο δείκτης pa και ο pb έχουν το ίδιο περιεχόμενο δηλαδή δείχνουν στην ίδια θέση της μνήμης Με την εντολή *pa=*pb το περιεχόμενο της μεταβλητής που δείχνει ο pa αλλάζει τιμή Η εντολή *pb=44 έχει σαν αποτέλεσμα τιμή της μεταβλητής που δείχνει ο δείκτης pb γίνεται 44 Το σύμβολο * χρησιμοποιείται για να δηλώσει δείκτες και σαν τελεστής έμμεση αναφοράς (indirection operator dereference operator) για την από αναφοροποιηση (dereferencing) στην τιμή της μεταβλητής που δείχνει ένας δείκτης, δηλαδή για την έμμεση αναφορά σε τιμή μίας μεταβλητής. 13

Συχνά λάθη Ο δείκτης είναι διεύθυνση (δεκαεξαδικός αριθμός ) και παίρνει τιμή με την χρήση του τελεστή & και όχι με απόδοση αριθμητικής τιμής int* d, x=200 ; d=&x; // sosto cout<<x<<*d<<endl;; d=3000; //lathos (invalid conversion from int to int* Με την δήλωση ενός δείκτη ο δείκτης περιέχει μία τυχαία διεύθυνση. Ενώ μπορώ να εμφανίσω την διεύθυνση αυτή αν κάνω χρήση αυτής θα προκαλέσει λάθος-κόλλημα στο πρόγραμμα (crash). Στο παρακάτω παράδειγμα ο compiler δεν «ξερει» πού να βάλει την τιμή 100. int* d; //xoris arxikopoihsh cout<<d; *d=100; cout<<*d<<endl; Για την αποφυγή τέτοιων λαθών καλό είναι με την δήλωση δείκτη ταυτόχρονα να αρχικοποιείται int x=100; int* d=&x, //arxikopoihsh Aν αυτό δεν μπορεί να γίνει μπορώ κάνω χρήση μίας ειδικής τιμής ώστε ο δείκτης να μην δείχνει πουθενά 14

NULL Αν δηλωθεί ένας δείκτης και δεν είμαι σε θέση να τον αρχικοποιήσω μπορώ να του αποδώσω την τιμή NULL. Στην περίπτωση αυτή ο δείκτης δεν δείχνει πουθενά. int *dik =NULL; if (dik!=null) cout<< *dik; else cout<< " O diktis den exei timi akomi"; cout<<*d; //tiponi spoupidia 15

Πράξεις με δείκτες Οι δείκτες είναι σαν ακέραιες μεταβλητές. Επιτρέπονται πράξεις πρόσθεσης αφαίρεσης αύξησης και μείωσης δηλαδή επιτρέπεται η χρήση των τελεστών + - ++ -- Όμως προσθέτοντας ή αφαιρώντας από ένα δείκτη προστίθεται ή αφαιρείται το μέγεθος του τύπου του δείκτη δηλ σε ένα δείκτη pd η πράξη pd++ ισοδυναμεί με την pd+sizeof(type) όπου Type ο τύπος του δείκτη. Πχ. αν ο τύπος του δείκτη είναι ακέραιος προστίθενται 4 bytes στην διεύθυνση που δείχνει ο δείκτης. 16

Παράδειγμα 1 int a[ ]={50,55,60,65}; int* dk=&a[2]; int m; m=*dk+1; cout<<m<<" "; //emfanizei to 61 m=*(dk+1); cout<<m<<" "; //emfanizei to 65 dk--; cout<<*dk<<" ";//emfanizei to 55 17

Παράδειγμα 2 18

Πίνακες και δείκτες 1. Στην C++ δείκτες και πίνακες έχουν στενή σχέση. Ο πίνακας a είναι ένας δείκτης του ιδίου τύπου με τον πίνακα και δείχνει στο πρώτο στοιχείο του πίνακα. 2. Όταν ο compiler συναντά a[n] το μετατρέπει σε *(a+n). Επομένως το 1 ο στοιχειο a[0] του πίνακα είναι το *a 2 ο στοιχειο a[1] του πίνακα είναι το *(a+1) 3 ο στοιχειο a[2] του πίνακα είναι το *(a+2) κλπ. 19

Δήλωση δείκτη πίνακα int a[ ]={50,55,60,65}; cout<<*a; //emfanizetai to 50 dil.to 1o stoixio tou pinaka cout<<*(a+3) //emfanizetai to 65 dil.to 4o sroixeio tou pinaka for (int i=0;i<4,i++) cout<<*(a+i)<<" "; Για να δηλώσω ένα δείκτη που δείχνει στο πρώτο στοιχείο του πίνακα μπορώ να το κάνω με δύο τρόπους: int a[ ]={50,55,60,65}; int * da=a; εναλλακτικά χρησιμοποιώ την δήλωση int * da=&a[0] 20

Παράδειγμα 1 Να ορισθεί πίνακας με 4 θέσεις και να μηδενιστούν τα στοιχεία του 1ος τρόπος float p1[4]; cout<<"times for p1"<<endl; for( int k=0;k<4;k++){ p1[k]=0; cout<<setw(4)<<p1[k];} 2ος τρόπος float p2[4]; cout<<"times for p2"<<endl; for(int k=0;k<4;k++){ *(p2+k)=0; cout<<setw(4)<<p2[k];} 21

Παρατηρήσεις (1) Οι τελεστές ++ και - - έχουν μεγαλύτερη προτεραιότητα από τον τελεστή * (indirection operator). Επομένως η έκφραση *p++ όταν ο p έχει οριστεί σαν δείκτης είναι ισοδύναμη με την *(p++), δηλαδή αυξάνεται η τιμή του p ώστε να δείχνει στο επόμενο στοιχείο. Σε εκφράσεις του τύπου κ=*p++ επειδή το ++ χρησιμοποιείται σαν επίθεμα η παράσταση υπολογίζεται σαν την τιμή που δείχνει ο δείκτης πριν γίνει αύξηση του δείκτη δηλαδή η *p++ πρώτα εφαρμόζεται ο τελεστής *και μετά ο ++. Επίσης θα πρέπει να τονιστεί ότι ακόμη και η χρήση παρενθέσεων δεν αλλάζει το αποτέλεσμα και η παράσταση κ= *(p++) υπολογίζεται σαν την τιμή που δείχνει ο δείκτης πριν γίνει αύξηση του δείκτη. Δηλαδή οι παραστάσεις κ=*p++ και η κ= *(p++) είναι ισοδύναμες Παράδειγμα int a[2]={10,20}; int* d, k ; d=&a[0];k=*(d++); cout<<" k= "<<k<<" *d= "<<*d<<endl; d=&a[0];k=*d++; cout<<" k= "<<k<<" *d= "<<*d<<endl; // emfanizontai oi idies times k=10 *d=20 22

Παρατηρήσεις (2) Μόνο στην περίπτωση που χρησιμοποιηθεί το ++ σαν πρόθεμα τότε υπολογίζεται η τιμή που δείχνει ο δείκτης αφού γίνει η αύξηση d=&a[0]; k=*++d; cout<<" z= "<<k<<" *d= <<*d<<endl; // emfanizontai oi times z=20 *d=20 23

Παράδειγμα 2 24

Παρατήρηση Το αναγνωριστικό ενός πίνακα (όνομα) είναι ένας δείκτης που δείχνει στο πρώτο στοιχείο του πίνακα. Ενώ επιτρέπεται αλλαγή τιμής σε μία μεταβλητή τύπου δείκτη δεν επιτρέπεται αλλαγή τιμής σε ένα δείκτη όταν αυτός έχει δηλωθεί ότι είναι πίνακας. Ο δείκτης στην περίπτωση αυτή είναι ένας constant pointer. Ο λόγος είναι ότι αν αλλάξει η τιμή δεν θα υπάρχει πρόσβαση στα υπόλοιπα στοιχεία του πίνακα. Το παρακάτω παράδειγμα εξηγεί το γεγονός αυτό. 25

Παράδειγμα 3 26

Τέλος Ενότητας