Η C είναι απλή/Πίνακες
Λοιπόν, κατευθείαν στο ψητό: Τι είναι οι πίνακες δεδομένων? Τι εννοείς "στατικοί"?
Πίνακας δεδομένων( array ) είναι μια συνήθης μορφή δομής δεδομένων που μας βοηθάει να οργανώνουμε τα δεδομένα μας. Όταν το χρησιμοποιούμε, έχουμε μόνο το όνομα του πίνακα και του δίνουμε τη θέση( index ) του στοιχείου που θέλουμε( πχ "array[index] = 1;" ). Μπορείτε να σκεφτείτε τους πίνακες ως:
Μονοδιάστατος: [ ], [ ], [ ], [ ], [ ], [ ], [ ]
Δισδιάστατος: [ [ ], [ ], [ ], [ ] ], [ [ ], [ ], [ ], [ ] ], [ [ ], [ ], [ ], [ ] ], [ [ ], [ ], [ ], [ ] ]
Στατικοί είναι οι πίνακες που έχουν ένα σταθερό μέγεθος, μια σταθερή χωρητικότητα, καθ`όλη τη διάρκεια του προγράμματος. Σ`αυτούς θα αναφερθώ στο παρόν άρθρο.
Η δήλωση ενός Ν-διάστατου πίνακα γίνεται ως εξής:
τύπος_στοιχείων όνομα_πίνακα[διάσταση-Ν]...[διάσταση-2][διάσταση-1];
πχ αν θέλω έναν int πίνακα 3Χ5 θα κάνω:
int myArray[3][5];
τώρα, αν θέλω να δώσω αρχικές τιμές, θα κάνω:
int myArray[5] = { 1, 2, 3, 4, 5 };
int myArray2[3][5] = { { 1, 2, 3, 4, 5 }, { 6, 7, 8, 9, 10 }, { 11, 12, 13, 14, 15 } };
να θυμάστε ότι αν δεν δώσετε για κάθε στοιχείο και μια τιμή τα υπόλοιπα γίνονται μηδέν. Επίσης, οι διαστάσεις θα πρέπει να είναι σταθερές, κ όχι κάποια μεταβλητή. Αν δεν διευκρινίσετε το μέγεθος της τελευταίας ( από τα αριστερά ) διάστασης, δηλαδή να αφήσετε τις αγκύλες άδειες, τότε ο πίνακας γίνεται τόσο μεγάλος όσα είναι και τα στοιχεία που του περάσατε ( μόνο στην αρχική δήλωση! ).
Όσο για τη χρήση σε κώδικα, να θυμάστε( πολύ σημαντικό ) ότι οι θέσεις ξεκινούν απ`το μηδέν, και όχι απ`το ένα, δηλαδή αν έχετε έναν πίνακα 20 στοιχείων το πρώτο θα ήταν το 0 και το τελευταίο θα ήταν το 19. Η C δεν παρέχει καμιά προστασία, και αν προσπαθήσετε να διαβάσετε ή να γράψετε σε μνήμη που δεν σας ανήκει, κανείς δε ξέρει τι μπορεί να συμβεί!
Ορίστε ένα απλό πρόγραμμα που πρώτα αποθηκεύει στον πίνακα του πολλαπλασιασμού από το 1 μέχρι και το 5 και μετά τον εκτυπώνει:
#include <stdio.h>
int main(void)
{
int mult_table[5][5];
int i, j;
for (i = 0; i < 5; i++){
for (j = 0; j < 5; j++){
mult_table[i][j] = (i+1)*(j+1);
}
}
for (i = 0; i < 5; i++){
for (j = 0; j < 5; j++){
printf("%d x %d = %d ", i+1, j+1, mult_table[i][j]);
}
printf("\n");
}
getchar();
return 0;
}
Τέλος, να διευκρινίσω ότι σκέτο το όνομα του πίνακα θεωρείται από τη C σαν δείκτης προς το πρώτο στοιχείο του( θα αναλύσω τους δείκτες στο επόμενο άρθρο ).