Μπορείτε να προσδιορίσετε με ακρίβεια το μήκος των πινάκων στη γλώσσα C χρησιμοποιώντας διάφορες μεθόδους. Αυτό διευκολύνει τη δυναμική διαχείριση των πινάκων και την προσαρμογή τους σε αλλαγές μεγέθους.

Τι είναι το μήκος πίνακα στη γλώσσα C και ποιες μέθοδοι υπάρχουν για τη μέτρησή του;

Όταν μετράτε το μήκος ενός πίνακα στη γλώσσα C, μετράτε τον αριθμό των στοιχείων που περιέχει ο πίνακας. Αυτή η πληροφορία είναι ζωτικής σημασίας για την πρόσβαση σε μεμονωμένα στοιχεία του πίνακα, τη διαδρομή του ή την εκτέλεση χειρισμών. Όταν δηλώνετε έναν πίνακα στη γλώσσα C, η μνήμη για τα στοιχεία του πίνακα κατανέμεται στη μνήμη RAM συνεχόμενα (δηλαδή, με διαδοχικό τρόπο χωρίς κενά). Στη γλώσσα C, δεν υπάρχει ενσωματωμένη συνάρτηση για τον προσδιορισμό του μήκους του πίνακα, οπότε πρέπει να το προσδιορίσετε χειροκίνητα.

Οι πιο συνηθισμένες μέθοδοι είναι:

  • sizeof()
  • Αριθμητική δεικτών
  • Βρόχοι

sizeof()

sizeof()ένας τελεστής στη γλώσσα C. Καθορίζει το μέγεθος ενός τύπου δεδομένων ή μιας μεταβλητής σε byte κατά τη διάρκεια της μεταγλώττισης. Ο τύπος επιστροφής του τελεστή sizeof είναι size_t, ένας τύπος ακέραιου αριθμού χωρίς πρόσημο που αντιπροσωπεύει το μέγεθος σε byte. Στη γλώσσα C, μπορείτε επίσης να χρησιμοποιήσετε τη συνάρτηση sizeof() για να υπολογίσετε τα μήκη των πινάκων.

Σύνταξη

Για να προσδιορίσετε τον αριθμό των στοιχείων σε έναν πίνακα, πρέπει να διαιρέσετε το συνολικό μέγεθος του πίνακα με το μέγεθος ενός μεμονωμένου στοιχείου.

data_type arrayLength = sizeof(array_name) / sizeof(array_name[index]);
c
  • data_type: Αυτός είναι ο τύπος δεδομένων στον οποίο θα αποθηκευτεί το μήκος του πίνακα.
  • array_name: Καθορίζει το όνομα του πίνακα.
  • sizeof(array_name): Αυτή η δήλωση έκφρασης επιστρέφει το συνολικό μέγεθος του πίνακα σε byte.
  • sizeof(array_name[index]): Διαιρώντας το συνολικό μέγεθος του πίνακα με το μέγεθος ενός μεμονωμένου στοιχείου, λαμβάνετε τον αριθμό των στοιχείων στον πίνακα.
  • index: Αντιπροσωπεύει τον δείκτη ενός στοιχείου στον πίνακα.

Παράδειγμα

Σε αυτό το παράδειγμα, θα χρησιμοποιήσουμε sizeof() για να προσδιορίσουμε το μέγεθος του πίνακα myArray καθώς και το μέγεθος ενός μεμονωμένου στοιχείου. Με αυτές τις πληροφορίες, μπορούμε στη συνέχεια να υπολογίσουμε τον αριθμό των στοιχείων στον πίνακα διαιρώντας το συνολικό μέγεθος με το μέγεθος ενός μεμονωμένου στοιχείου. Θα μετρήσουμε το μέγεθος του στοιχείου και του πίνακα σε byte.

int main() {
    int myArray[] = {1, 2, 3, 4, 5};
    size_t totalSize = sizeof(myArray);
    size_t elementSize = sizeof(myArray[0]);
    size_t arrayLength = totalSize / elementSize;
    printf("Total size of the array: %d bytes\n", (int)totalSize);
    printf("Size of a single element: %d bytes\n", (int)elementSize);
    printf("Number of elements in the array: %d\n", (int)arrayLength);
    return 0;
}
c

Το αποτέλεσμα είναι:

Total size of the array: 20 bytes
Size of a single element: 4 bytes
Number of elements in the array: 5
c

Αριθμητική δεικτών

Οι δείκτες από μόνοι τους δεν περιέχουν πληροφορίες σχετικά με το μέγεθος ή το μήκος ενός πίνακα. Ωστόσο, μπορούμε να χρησιμοποιήσουμε την αριθμητική των δεικτών μαζί με τις διευθύνσεις των στοιχείων του πίνακα για να προσδιορίσουμε το μήκος του πίνακα C.

Σύνταξη

data_type arr_length = *(&arr + 1) - arr;
c
  • &arr: Αυτό δημιουργεί έναν δείκτη που δείχνει σε έναν ολόκληρο πίνακα στοιχείων.
  • (&arr + 1): Εδώ, ο δείκτης που δείχνει προς τον πίνακα arr αυξάνεται κατά 1. Δεδομένου ότι arr είναι ένας πίνακας, αυτό σημαίνει ότι ο δείκτης θα δείχνει προς τον επόμενο συνεχόμενο πίνακα που είναι του ίδιου τύπου με arr.

Παράδειγμα

Η έκφραση *(&arr + 1) - arr υπολογίζει τη διαφορά μεταξύ του δείκτη που δείχνει στον επόμενο πίνακα &arr + 1 και του δείκτη που δείχνει στο πρώτο στοιχείο του αρχικού πίνακα. Σε αυτή την περίπτωση, η «επόμενη» περιοχή μνήμης είναι το τέλος του πρώτου πίνακα. Η διαφορά που προκύπτει είναι ίση με τον αριθμό των στοιχείων στον πίνακα.

#include <stdio.h>
int main() {
    int arr[] = {1, 2, 3, 4, 5};
    int length = *(&arr + 1) - arr;
    printf("Number of elements in the array: %d\n", length);
    return 0;
}
c

Έξοδος:

Number of elements in the array: 5
c

Για βρόχους

Μια άλλη μέθοδος για τον προσδιορισμό του μήκους των πινάκων στη γλώσσα C είναι η χρήση ενός βρόχου for. Αυτή η προσέγγιση περιλαμβάνει την επανάληψη του πίνακα και τη μέτρηση του αριθμού των στοιχείων που περιέχει. Για να χρησιμοποιήσετε αυτήν την τεχνική, ο πίνακας του οποίου θέλετε να προσδιορίσετε το μήκος πρέπει να βρίσκεται στο ίδιο πεδίο κώδικα με τον βρόχο for που χρησιμοποιείτε για τον προσδιορισμό του μήκους του.

Παράδειγμα

Εδώ, ο βρόχος αυξάνει τον μετρητή arrayLength για κάθε στοιχείο που περνάει. Η συνθήκη i < sizeof(arr) / sizeof(arr[0]) εξασφαλίζει ότι ο βρόχος εκτελείται μόνο αν υπάρχουν στοιχεία στον πίνακα.

#include <stdio.h>
int main() {
    int arr[] = {1, 2, 3, 4, 5, 6, 7, 8};
    size_t arrayLength = 0;
    for (size_t i = 0; i < sizeof(arr) / sizeof(arr[0]); ++i) {
        arrayLength++;
    }
    printf("Number of elements in the array: %d\n", arrayLength);
    return 0;
}
c

Έξοδος:

Number of elements in the array: 8
c
Go to Main Menu