Σε αυτό το σεμινάριο, θα μάθουμε να δουλεύουμε με πίνακες. Θα μάθουμε να δηλώνουμε, να αρχικοποιούμε και να έχουμε πρόσβαση σε στοιχεία πίνακα στον προγραμματισμό C ++ με τη βοήθεια παραδειγμάτων.
Στο C ++, ένας πίνακας είναι μια μεταβλητή που μπορεί να αποθηκεύσει πολλές τιμές του ίδιου τύπου. Για παράδειγμα,
Ας υποθέσουμε ότι μια τάξη έχει 27 μαθητές και πρέπει να αποθηκεύσουμε τους βαθμούς όλων αυτών. Αντί να δημιουργήσουμε 27 ξεχωριστές μεταβλητές, μπορούμε απλά να δημιουργήσουμε έναν πίνακα:
double grade(27);
Εδώ, ο βαθμός είναι ένας πίνακας που μπορεί να χωρέσει έως και 27 στοιχεία double
τύπου.
Στο C ++, το μέγεθος και ο τύπος των συστοιχιών δεν μπορούν να αλλάξουν μετά τη δήλωσή του.
C ++ Array Δήλωση
dataType arrayName(arraySize);
Για παράδειγμα,
int x(6);
Εδώ,
int
- τύπος στοιχείου προς αποθήκευση- x - όνομα του πίνακα
6
- μέγεθος του πίνακα
Πρόσβαση στα Στοιχεία C ++ Array
Στο C ++, κάθε στοιχείο σε έναν πίνακα συσχετίζεται με έναν αριθμό. Ο αριθμός είναι γνωστός ως ευρετήριο πίνακα. Μπορούμε να έχουμε πρόσβαση σε στοιχεία ενός πίνακα χρησιμοποιώντας αυτούς τους δείκτες.
// syntax to access array elements array(index);
Εξετάστε τον πίνακα x που έχουμε δει παραπάνω.
![](https://cdn.wiki-base.com/7012201/c_arrays_with_examples.png.webp)
Λίγα πράγματα που πρέπει να θυμάστε:
- Οι δείκτες του πίνακα ξεκινούν με
0
. Δηλαδή το x (0) είναι το πρώτο στοιχείο που αποθηκεύεται στο ευρετήριο0
. - Εάν το μέγεθος ενός πίνακα είναι
n
, το τελευταίο στοιχείο αποθηκεύεται στο ευρετήριο(n-1)
. Σε αυτό το παράδειγμα, το x (5) είναι το τελευταίο στοιχείο. - Τα στοιχεία ενός πίνακα έχουν διαδοχικές διευθύνσεις. Για παράδειγμα, ας υποθέσουμε ότι η αρχική διεύθυνση
x(0)
είναι 2120d. Στη συνέχεια, η διεύθυνση του επόμενου στοιχείουx(1)
θα είναι 2124d, η διεύθυνσηx(2)
θα είναι 2128d και ούτω καθεξής.
Εδώ, το μέγεθος κάθε στοιχείου αυξάνεται κατά 4. Αυτό συμβαίνει επειδή το μέγεθοςint
είναι 4 byte.
Αρχικοποίηση συστοιχίας C ++
Στο C ++, είναι δυνατή η προετοιμασία ενός πίνακα κατά τη δήλωση. Για παράδειγμα,
// declare and initialize and array int x(6) = (19, 10, 8, 17, 9, 15);
![](https://cdn.wiki-base.com/7012201/c_arrays_with_examples_2.png.webp)
Μια άλλη μέθοδος για την προετοιμασία του πίνακα κατά τη δήλωση:
// declare and initialize an array int x() = (19, 10, 8, 17, 9, 15);
Εδώ, δεν έχουμε αναφέρει το μέγεθος του πίνακα. Σε τέτοιες περιπτώσεις, ο μεταγλωττιστής υπολογίζει αυτόματα το μέγεθος.
C ++ Array με κενά μέλη
Στο C ++, εάν ένας πίνακας έχει μέγεθος n
, μπορούμε να αποθηκεύσουμε έως και n αριθμό στοιχείων στον πίνακα. Ωστόσο, τι θα συμβεί αν αποθηκεύσουμε λιγότερα από n αριθμό στοιχείων.
Για παράδειγμα,
// store only 3 elements in the array int x(6) = (19, 10, 8);
Εδώ, ο πίνακας x έχει μέγεθος 6
. Ωστόσο, το έχουμε αρχίσει με μόνο 3 στοιχεία.
Σε τέτοιες περιπτώσεις, ο μεταγλωττιστής εκχωρεί τυχαίες τιμές στις υπόλοιπες θέσεις. Συχνά, αυτή η τυχαία τιμή είναι απλά 0
.
![](https://cdn.wiki-base.com/7012201/c_arrays_with_examples_3.png.webp)
Πώς να εισαγάγετε και να εκτυπώσετε στοιχεία πίνακα;
int mark(5) = (19, 10, 8, 17, 9) // change 4th element to 9 mark(3) = 9; // take input from the user // store the value at third position cin>> mark(2); // take input from the user // insert at ith position cin>> mark(i-1); // print first element of the array cout <> mark(i-1);
Παράδειγμα 1: Εμφάνιση στοιχείων σειράς
#include using namespace std; int main() ( int numbers(5) = (7, 5, 6, 12, 35); cout << "The numbers are: "; // Printing array elements // using range based for loop for (const int &n : numbers) ( cout << n << " "; ) cout << "The numbers are: "; // Printing array elements // using traditional for loop for (int i = 0; i < 5; ++i) ( cout << numbers(i) << " "; ) return 0; )
Παραγωγή
Οι αριθμοί είναι: 7 5 6 12 35 Οι αριθμοί είναι: 7 5 6 12 35
Εδώ, έχουμε χρησιμοποιήσει ένα for
βρόχο για να επαναλάβει από το i = 0
να i = 4
. Σε κάθε επανάληψη, έχουμε εκτυπώσει numbers(i)
.
Χρησιμοποιήσαμε ξανά ένα εύρος βασισμένο σε βρόχο για να εκτυπώσουμε τα στοιχεία του πίνακα. Για να μάθετε περισσότερα σχετικά με αυτόν τον βρόχο, επιλέξτε C ++ Ranged for Loop.
Σημείωση: Στον βρόχο βάσει εύρους, χρησιμοποιήσαμε τον κωδικό const int &n
αντί για int n
τη δήλωση εύρους. Ωστόσο, το const int &n
προτιμάται περισσότερο επειδή:
- Χρησιμοποιώντας
int n
απλά αντίγραφα των στοιχείων του πίνακα στη μεταβλητή n κατά τη διάρκεια κάθε επανάληψης. Αυτό δεν είναι αποδοτικό στη μνήμη.
& n, ωστόσο, χρησιμοποιεί τη διεύθυνση μνήμης των στοιχείων του πίνακα για να αποκτήσει πρόσβαση στα δεδομένα τους χωρίς να τα αντιγράψει σε μια νέα μεταβλητή. Αυτό είναι αποδοτικό στη μνήμη. - Εκτυπώνουμε απλά τα στοιχεία του πίνακα, δεν τα τροποποιούμε. Επομένως, χρησιμοποιούμε
const
για να μην αλλάξουμε κατά λάθος τις τιμές του πίνακα.
Παράδειγμα 2: Λήψη εισόδων από το χρήστη και αποθήκευση τους σε μια σειρά
#include using namespace std; int main() ( int numbers(5); cout << "Enter 5 numbers: " << endl; // store input from user to array for (int i = 0; i > numbers(i); ) cout << "The numbers are: "; // print array elements for (int n = 0; n < 5; ++n) ( cout << numbers(n) << " "; ) return 0; )
Παραγωγή
Enter 5 numbers: 11 12 13 14 15 The numbers are: 11 12 13 14 15
Once again, we have used a for
loop to iterate from i = 0
to i = 4
. In each iteration, we took an input from the user and stored it in numbers(i)
.
Then, we used another for
loop to print all the array elements.
Example 3: Display Sum and Average of Array Elements Using for Loop
#include using namespace std; int main() ( // initialize an array without specifying size double numbers() = (7, 5, 6, 12, 35, 27); double sum = 0; double count = 0; double average; cout << "The numbers are: "; // print array elements // use of range-based for loop for (const double &n : numbers) ( cout << n << " "; // calculate the sum sum += n; // count the no. of array elements ++count; ) // print the sum cout << "Their Sum = " << sum << endl; // find the average average = sum / count; cout << "Their Average = " << average << endl; return 0; )
Output
The numbers are: 7 5 6 12 35 27 Their Sum = 92 Their Average = 15.3333
In this program:
- We have initialized a double array named numbers but without specifying its size. We also declared three double variables sum, count, and average.
Here,sum =0
andcount = 0
. - Then we used a range based
for
loop to print the array elements. In each iteration of the loop, we add the current array element to sum. - Αυξάνουμε επίσης την τιμή μέτρησης κατά
1
κάθε επανάληψη, έτσι ώστε να μπορούμε να πάρουμε το μέγεθος του πίνακα μέχρι το τέλος του βρόχου για. - Μετά την εκτύπωση όλων των στοιχείων, εκτυπώνουμε το άθροισμα και τον μέσο όρο όλων των αριθμών. Ο μέσος όρος των αριθμών δίνεται από
average = sum / count;
Σημείωση: Χρησιμοποιήσαμε έναν for
βρόχο με εύρος αντί για έναν κανονικό for
βρόχο.
Ένας κανονικός for
βρόχος απαιτεί από εμάς να καθορίσουμε τον αριθμό των επαναλήψεων, που δίνεται από το μέγεθος του πίνακα.
Όμως, ένα εύρος for
βρόχου δεν απαιτεί τέτοιες προδιαγραφές.
C ++ Array εκτός ορίων
Εάν δηλώσουμε έναν πίνακα μεγέθους 10, τότε ο πίνακας θα περιέχει στοιχεία από το ευρετήριο 0 έως 9.
Ωστόσο, εάν προσπαθήσουμε να αποκτήσουμε πρόσβαση στο στοιχείο στο ευρετήριο 10 ή περισσότερα από 10, θα έχει ως αποτέλεσμα Απροσδιόριστη Συμπεριφορά.