Άρθρο #7: Πίνακες

Επισκόπηση προηγούμενης Θ.Ενότητας Επισκόπηση επόμενης Θ.Ενότητας Πήγαινε κάτω

Άρθρο #7: Πίνακες

Δημοσίευση από GReaper Την / Το Σαβ Ιουν 02, 2012 2:58 am

Λοιπόν, κατευθείαν στο ψητό: Τι είναι οι πίνακες δεδομένων? Τι εννοείς "στατικοί"?

Πίνακας δεδομένων( 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 δεν παρέχει καμιά προστασία, και αν προσπαθήσετε να διαβάσετε ή να γράψετε σε μνήμη που δεν σας ανήκει, κανείς δε ξέρει τι μπορεί να συμβεί! Cool

Ορίστε ένα απλό πρόγραμμα που πρώτα αποθηκεύει στον πίνακα του πολλαπλασιασμού από το 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 σαν δείκτης προς το πρώτο στοιχείο του( θα αναλύσω τους δείκτες στο επόμενο άρθρο μου ).

avatar
GReaper
Admin

Αριθμός μηνυμάτων : 16
Ημερομηνία εγγραφής : 01/10/2011
Ηλικία : 25
Τόπος : Σπάρτη

http://procorn.forumgreek.com

Επιστροφή στην κορυφή Πήγαινε κάτω

Επισκόπηση προηγούμενης Θ.Ενότητας Επισκόπηση επόμενης Θ.Ενότητας Επιστροφή στην κορυφή


 
Δικαιώματα σας στην κατηγορία αυτή
Δεν μπορείτε να απαντήσετε στα Θέματα αυτής της Δ.Συζήτησης