C kalboje galima patikimai nustatyti masyvų ilgį naudojant įvairius metodus. Tai pa­leng­vi­na dinamišką masyvų valdymą ir pri­si­tai­ky­mą prie dydžio pokyčių.

Kas yra masyvo ilgis C kalboje ir kokie yra jo matavimo metodai?

Matydami masyvo ilgį C kalboje, jūs matuojate elementų, kuriuos masyvas turi , skaičių. Ši in­for­ma­ci­ja yra labai svarbi norint pasiekti atskirus masyvo elementus, juos per­žiū­rė­ti ar atlikti ma­ni­pu­lia­ci­jas. Kai dekla­ruo­ja­te masyvą C kalboje, atminties ele­men­tams masyve yra skiriama RAM atmintyje (t. y. nuo­sek­liai, be tarpų). C kalboje nėra įdiegtos funkcijos masyvo ilgį nustatyti, todėl jį reikia nustatyti rankiniu būdu.

Daž­niau­siai naudojami metodai yra:

  • sizeof()
  • Rodyklės arit­me­ti­ka
  • Ciklai

sizeof()

sizeof() ope­ra­to­rius C kalboje. Jis nustato duomenų tipo arba kintamojo dydį baitais kom­pi­lia­vi­mo metu. Ope­ra­to­riaus sizeof grą­ži­na­mo­jo tipo reikšmė yra size_t, tai yra nelyginis sveikasis skaičius, kuris atitinka dydį baitais. C kalboje taip pat galima naudoti funkciją sizeof(), kad ap­skai­čiuo­ti masyvo ilgį.

Sintaksė

Norėdami nustatyti masyvo elementų skaičių, turite padalyti bendrą masyvo dydį iš vieno elemento dydžio.

data_type arrayLength = sizeof(array_name) / sizeof(array_name[index]);
c
  • data_type: Tai duomenų tipas, kuriame bus saugomas masyvo ilgis.
  • array_name: Nurodo masyvo pa­va­di­ni­mą.
  • sizeof(array_name): Šis išraiškos teiginys grąžina masyvo bendrą dydį baitais.
  • sizeof(array_name[index]): Padalijus masyvo bendrą dydį iš vieno elemento dydžio, gaunamas elementų skaičius masyve.
  • index: Tai reiškia masyvo elemento indeksą.

Pavyzdys

Šiame pavyzdyje naudosime sizeof(), kad nu­sta­ty­tu­me masyvo myArray dydį ir vieno elemento dydį. Turėdami šią in­for­ma­ci­ją, galime ap­skai­čiuo­ti elementų skaičių masyve, pa­da­lin­da­mi bendrą dydį iš vieno elemento dydžio. Elemento ir masyvo dydį matuosime baitais.

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

Re­zul­ta­tas yra:

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

Rodyklės arit­me­ti­ka

Pačios rodyklės neapima in­for­ma­ci­jos apie masyvo dydį ar ilgį. Tačiau galime naudoti rodyklių arit­me­ti­ką kartu su masyvo elementų adresais, kad nu­sta­ty­tu­me C masyvo ilgį.

Sintaksė

data_type arr_length = *(&arr + 1) - arr;
c
  • &arr: Tai sukuria rodyklę, kuri nurodo visą elementų masyvą.
  • (&arr + 1): Čia rodyklė, nukreipta į masyvą arr, pa­di­di­na­ma 1. Kadangi arr yra masyvas, tai reiškia, kad rodyklė nukreips į kitą iš eilės einantį masyvą, kuris yra to paties tipo kaip arr.

Pavyzdys

Išraiška *(&arr + 1) - arr ap­skai­čiuo­ja skirtumą tarp rodyklės, kuri nurodo į kitą masyvą &arr + 1, ir rodyklės, kuri nurodo į pirmojo masyvo elementą. Šiuo atveju „kitas“ atminties plotas yra pirmojo masyvo pabaiga. Gautas skirtumas yra lygus masyvo elementų skaičiui.

#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

Išvestis:

Number of elements in the array: 5
c

For ciklai

Kitas būdas nustatyti masyvo ilgį C kalboje yra naudoti for ciklą. Šis metodas apima masyvo perėjimą ir jame esančių elementų skai­čia­vi­mą. Norint naudoti šią techniką, masyvas, kurio ilgį norite nustatyti, turi būti toje pačioje kodo srityje kaip ir for ciklas, kurį naudojate jo ilgiui nustatyti.

Pavyzdys

Čia kilpa padidina arrayLength skaitiklį už kiekvieną elementą, kuris yra per­duo­da­mas. i < sizeof(arr) / sizeof(arr[0]) sąlyga užtikrina, kad kilpa veiks tik tuo atveju, jei elementai yra masyve.

#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

Išvestis:

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