Dolžino nizov v jeziku C lahko za­ne­slji­vo določite z raz­lič­ni­mi metodami. To olajša dinamično upra­vlja­nje nizov in pri­la­ga­ja­nje spre­mem­bam velikosti.

Kaj je dolžina niza v C in kakšne metode obstajajo za njegovo merjenje?

Ko merite dolžino niza v C, merite število elementov, ki jih niz vsebuje. Ta in­for­ma­ci­ja je ključna za dostop do po­sa­me­znih elementov v nizu, prehod skozi niz ali izvajanje ma­ni­pu­la­cij. Ko de­kla­ri­ra­te niz v C, se pomnilnik za elemente v nizu dodeli v RAM-u ne­pre­ki­nje­no (tj. zaporedno brez vrzeli). V jeziku C ni vgrajene funkcije za določanje dolžine niza, zato jo morate določiti ročno.

Naj­po­go­stej­še metode so:

  • sizeof()
  • Arit­me­ti­ka kazalcev
  • Zank

sizeof()

sizeof() operator v jeziku C. Določa velikost po­dat­kov­ne­ga tipa ali spre­men­ljiv­ke v bajtih med pre­va­ja­njem. Vrsta vrnitve ope­ra­tor­ja sizeof je size_t, ne­pod­pi­sa­ni ce­lo­šte­vilč­ni tip, ki pred­sta­vlja velikost v bajtih. V jeziku C lahko za izračun dolžine niza uporabite tudi funkcijo sizeof().

Sintaksa

Da bi določili število elementov v nizu, morate skupno velikost niza deliti z ve­li­ko­stjo po­sa­me­zne­ga elementa.

data_type arrayLength = sizeof(array_name) / sizeof(array_name[index]);
c
  • data_type: To je tip podatkov, v katerem bo shranjena dolžina niza.
  • array_name: Določa ime niza.
  • sizeof(ime_niza): Ta izraz vrne skupno velikost niza v bajtih.
  • sizeof(array_name[index]): S delitvijo skupne velikosti niza z ve­li­ko­stjo po­sa­me­zne­ga elementa dobite število elementov v nizu.
  • index: To pred­sta­vlja indeks elementa v nizu.

Primer

V tem primeru bomo uporabili sizeof() za določitev velikosti niza myArray in velikosti po­sa­me­zne­ga elementa. S temi podatki lahko nato iz­ra­ču­na­mo število elementov v nizu, tako da skupno velikost delimo z ve­li­ko­stjo po­sa­me­zne­ga elementa. Velikost elementa in niza bomo merili v bajtih.

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

Izhod je:

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

Arit­me­ti­ka kazalcev

Kazalci sami po sebi ne vsebujejo in­for­ma­cij o velikosti ali dolžini niza. Vendar pa lahko uporabimo arit­me­ti­ko kazalcev skupaj z naslovi elementov niza, da določimo dolžino niza v jeziku C.

Sintaksa

data_type arr_length = *(&arr + 1) - arr;
c
  • &arr: To ustvari kazalec, ki kaže na celoten niz elementov.
  • (&arr + 1): Tukaj se kazalec, ki kaže na niz arr, poveča za 1. Ker je arr niz, to pomeni, da bo kazalec kazal na naslednji zaporedni niz, ki je istega tipa kot arr.

Primer

Izraz *(&arr + 1) - arr izračuna razliko med kazalcem, ki kaže na naslednji niz &arr + 1, in kazalcem, ki kaže na prvi element izvirnega niza. V tem primeru je „naslednje“ po­mnil­ni­ško območje konec prvega niza. Re­zul­ta­tna razlika je enaka številu elementov v nizu.

#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

Izhod:

Number of elements in the array: 5
c

Za zanke

Druga metoda za določanje dolžine niza v C je uporaba zanke for. Ta pristop vključuje po­na­vlja­nje skozi niz in štetje števila elementov, ki jih vsebuje. Da bi uporabili to tehniko, mora biti niz, katerega dolžino želite določiti, v istem obsegu kode kot zanka for, ki jo upo­ra­blja­te za določanje njegove dolžine.

Primer

Tukaj zanka poveča število arrayLength za vsak element, ki je prenesen. Pogoj i < sizeof(arr) / sizeof(arr[0]) za­go­ta­vlja, da zanka teče samo, če so elementi v nizu.

#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

Izhod:

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