Οι πίνακες χρησιμοποιούνται για να αποθηκεύσουν πολλές τιμές σε μια μεταβλητή, αντί να δηλώνουν ξεχωριστές μεταβλητές για κάθε τιμή.
Για να δημιουργήσετε έναν πίνακα, καθορίστε τον τύπο δεδομένων (όπως int) και καθορίστε το όνομα του πίνακα ακολουθούμενο από αγκύλες [].
Για να εισαγάγετε τιμές σε αυτόν, χρησιμοποιήστε μια λίστα χωρισμένη με κόμματα, μέσα σε αγκύλες:
#include <stdio.h> int main() { int numbers[5] = {1, 2, 3, 4, 5}; printf("%d\n", numbers[0]); printf("%d\n", numbers[2]); return 0; }
Στο παραπάνω παράδειγμα, ο πίνακας numbers περιέχει τις τιμές 1, 2, 3, 4 και 5. Η συνάρτηση printf χρησιμοποιείται για να εκτυπώσει την πρώτη τιμή του πίνακα (index 0) και την τρίτη τιμή του πίνακα (index 2). Οι τιμές αυτές εκτυπώνονται στην οθόνη.
Για να αποκτήσετε πρόσβαση σε ένα στοιχείο του πίνακα, αναφερθείτε στον αριθμό ευρετηρίου του.
Οι ευρετήριοι του πίνακα ξεκινούν από 0: [0] είναι το πρώτο στοιχείο. Το [1] είναι το δεύτερο στοιχείο, κ.λπ.
Η παρακάτω δήλωση αποκτά πρόσβαση στην τιμή του πρώτου στοιχείου [0] στον πίνακα myNumbers:
#include <stdio.h> int main() { int myNumbers[3] = {10, 20, 30}; printf("%d\n", myNumbers[0]); return 0; }
Στο παραπάνω παράδειγμα, ο πίνακας myNumbers περιέχει τις τιμές 10, 20 και 30. Η συνάρτηση printf χρησιμοποιείται για να εκτυπώσει την πρώτη τιμή του πίνακα (index 0), η οποία είναι ο αριθμός 10. Αυτή η τιμή εκτυπώνεται στην οθόνη.
Για να αλλάξετε την τιμή ενός συγκεκριμένου στοιχείου, αναφερθείτε στον αριθμό ευρετηρίου του:
#include <stdio.h> int main() { int myNumbers[3] = {10, 20, 30}; printf("%d\n", myNumbers[1]); myNumbers[1] = 40; printf("%d\n", myNumbers[1]); return 0; }
Στο παραπάνω παράδειγμα, ο πίνακας myNumbers αρχικοποιείται με τις τιμές 10, 20 και 30. Η συνάρτηση printf χρησιμοποιείται για να εκτυπώσει τη δεύτερη τιμή του πίνακα (index 1), η οποία είναι ο αριθμός 20. Στη συνέχεια, η τιμή του δεύτερου στοιχείου του πίνακα αλλάζει από 20 σε 40, και η συνάρτηση printf χρησιμοποιείται ξανά για να εκτυπώσει την ανανεωμένη δεύτερη τιμή του πίνακα (index 1), η οποία είναι το 40.
[adinserter block=”2″]
Μπορείτε να διατρέξετε τα στοιχεία του πίνακα με τη βοήθεια της επανάληψης for.
Το παρακάτω παράδειγμα εμφανίζει όλα τα στοιχεία στον πίνακα myNumbers:
#include <stdio.h> int main() { int myNumbers[3] = {10, 20, 30}; int i; for (i = 0; i < 3; i++) { printf("%d\n", myNumbers[i]); } return 0; }
Στο παραπάνω παράδειγμα, η επανάληψη for χρησιμοποιείται για να διατρέξει τα τρία στοιχεία του πίνακα myNumbers. Κάθε στοιχείο του πίνακα εκτυπώνεται στην οθόνη με τη χρήση της συνάρτησης printf. Η μεταβλητή i χρησιμοποιείται ως ευρετήριο του πίνακα και αρχικοποιείται στο 0, ενώ αυξάνεται κατά 1 σε κάθε επανάληψη.
Μια άλλη συνηθισμένη μέθοδος για τη δημιουργία πινάκων είναι να καθορίσετε το μέγεθος του πίνακα και να προσθέσετε στοιχεία αργότερα:
#include <stdio.h> int main() { int myNumbers[5]; int i; myNumbers[0] = 10; myNumbers[1] = 20; myNumbers[2] = 30; myNumbers[3] = 40; myNumbers[4] = 50; for (i = 0; i < 5; i++) { printf("%d\n", myNumbers[i]); } return 0; }
Στο παραπάνω παράδειγμα, ένας πίνακας myNumbers δηλώνεται με μέγεθος 5. Στη συνέχεια, οι τιμές 10, 20, 30, 40 και 50 προστίθενται στα πρώτα πέντε στοιχεία του πίνακα. Η επανάληψη for χρησιμοποιείται για να διατρέξει τα πέντε στοιχεία του πίνακα myNumbers και να τα εκτυπώσει στην οθόνη.
Πολυδιάστατοι Πίνακες
Στο προηγούμενο κεφάλαιο, μάθατε για τους πίνακες, που είναι γνωστοί και ως πίνακες μονής διάστασης. Αυτοί είναι εξαιρετικοί και κάτι που θα χρησιμοποιείτε πολύ κατά τη διάρκεια της προγραμματιστικής σας δουλειάς στο C. Ωστόσο, αν θέλετε να αποθηκεύσετε δεδομένα σε μορφή πίνακα, όπως ένας πίνακας με σειρές και στήλες, πρέπει να εξοικειωθείτε με τους πολυδιάστατους πίνακες.
Ένας πολυδιάστατος πίνακας είναι ουσιαστικά ένας πίνακας από πίνακες.
Οι πίνακες μπορούν να έχουν οποιοδήποτε αριθμό διαστάσεων. Σε αυτό το κεφάλαιο, θα εισαγάγουμε τον πιο κοινό τύπο, τους δισδιάστατους πίνακες (2D).
[adinserter block=”3″]
Δισδιάστατοι Πίνακες
Ένας 2D πίνακας είναι επίσης γνωστός ως πίνακας (ένας πίνακας με σειρές και στήλες).
Για να δημιουργήσετε έναν 2D πίνακα ακεραίων, δείτε το παρακάτω παράδειγμα:
#include <stdio.h> int main() { int matrix[3][3] = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} }; int i, j; for (i = 0; i < 3; i++) { for (j = 0; j < 3; j++) { printf("%d ", matrix[i][j]); } printf("\n"); } return 0; }
Στο παραπάνω παράδειγμα, δημιουργείται ένας 2D πίνακας με το όνομα matrix, που αποτελείται από 3 σειρές και 3 στήλες. Τα στοιχεία του πίνακα δηλώνονται με μια λίστα αριθμών, χρησιμοποιώντας δύο αγκύλες για κάθε διάσταση. Η εσωτερική επανάληψη for χρησιμοποιείται για να διατρέξει τα στοιχεία κάθε σειράς και η εξωτερική επανάληψη for χρησιμοποιείται για να διατρέξει τις σειρές του πίνακα. Κάθε στοιχείο του πίνακα εκτυπώνεται στην οθόνη με τη χρήση της συνάρτησης printf.
Πρόσβαση στα στοιχεία ενός 2D πίνακα
Για να αποκτήσετε πρόσβαση σε ένα στοιχείο ενός δισδιάστατου πίνακα, πρέπει να καθορίσετε τον αριθμό ευρετηρίου και για τη σειρά και για τη στήλη.
Η παρακάτω εντολή αποκτά πρόσβαση στην τιμή του στοιχείου στην πρώτη σειρά (0) και την τρίτη στήλη (2) του πίνακα matrix.
matrix[0][2]
Αλλαγή των στοιχείων ενός 2D πίνακα
Για να αλλάξετε την τιμή ενός στοιχείου, αναφερθείτε στον αριθμό ευρετηρίου του στοιχείου σε κάθε διάσταση:
Το ακόλουθο παράδειγμα θα αλλάξει την τιμή του στοιχείου στην πρώτη σειρά (0) και την πρώτη στήλη (0):
matrix[0][0] = 42;
Επανάληψη μέσω ενός 2D πίνακα
Για να διατρέξετε ένα δισδιάστατο πίνακα, χρειάζεστε μία επανάληψη για κάθε διάσταση του πίνακα.
Το ακόλουθο παράδειγμα εμφανίζει όλα τα στοιχεία του πίνακα matrix:
#include <stdio.h> int main() { int matrix[3][3] = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} }; int i, j; for (i = 0; i < 3; i++) { for (j = 0; j < 3; j++) { printf("%d ", matrix[i][j]); } printf("\n"); } return 0; }
Στο παραπάνω παράδειγμα, διατρέχετε ο πίνακας matrix με τη χρήση δύο επαναλήψεων for. Η εσωτερική επανάληψη for χρησιμοποιείται για να διατρέξει τα στοιχεία κάθε σειράς και η εξωτερική επανάληψη for χρησιμοποιείται για να διατρέξει τις σειρές του πίνακα. Κάθε στοιχείο του πίνακα εκτυπώνεται στην οθόνη με τη χρήση της συνάρτησης printf.