C valodā varat uzticami noteikt masīvu garumu, iz­man­to­jot dažādas metodes. Tas atvieglo masīvu dinamisku pār­val­dī­bu un pie­lā­go­ša­nos izmēra izmaiņām.

Kas ir masīva garums C valodā un kādas metodes ir tā mērīšanai?

Mērot masīva garumu C valodā, jūs mēra elementu skaitu, kas ir masīvā. Šī in­for­mā­ci­ja ir ļoti svarīga, lai piekļūtu at­se­viš­ķiem ele­men­tiem masīvā, pār­ska­tī­tu to vai veiktu ma­ni­pu­lā­ci­jas. Kad jūs dek­la­rē­jat masīvu C valodā, atmiņa ele­men­tiem masīvā tiek piešķirta RAM atmiņā secīgi (t.i., secīgi bez atstarpēm). C valodā nav iebūvētas funkcijas masīva garuma no­teik­ša­nai, tāpēc tas jānosaka manuāli.

Visbiežāk iz­man­to­tās metodes ir:

  • sizeof()
  • Rādītāju arit­mē­ti­ka
  • Cikli

sizeof()

sizeof() operators C valodā. Tas kom­pi­lā­ci­jas laikā nosaka datu tipa vai mainīgā lielumu baitos. Operatora sizeof at­grie­ša­nas tips ir size_t, ne­pār­rak­stāms vesels skaitlis, kas attēlo lielumu baitos. C valodā var izmantot arī funkciju sizeof(), lai ap­rē­ķi­nā­tu masīva garumu.

Sintakse

Lai noteiktu elementu skaitu masīvā, jums jādalī masīva kopējais izmērs ar viena elementa izmēru.

data_type arrayLength = sizeof(array_name) / sizeof(array_name[index]);
c
  • data_type: Tas ir datu tips, kurā tiks saglabāts masīva garums.
  • array_name: Norāda masīva nosaukumu.
  • sizeof(masīva_nosaukums): Šis iz­teik­smes ap­gal­vo­jums atgriež masīva kopējo izmēru baitos.
  • sizeof(masīva_nosaukums[indekss]): Dalot masīva kopējo izmēru ar viena elementa izmēru, iegūst elementu skaitu masīvā.
  • index: Tas attēlo elementa indeksu masīvā.

Piemērs

Šajā piemērā mēs iz­man­to­sim sizeof(), lai noteiktu masīva myArray izmēru, kā arī atsevišķa elementa izmēru. Ar šo in­for­mā­ci­ju mēs varam aprēķināt elementu skaitu masīvā, dalot kopējo izmēru ar atsevišķa elementa izmēru. Mēs mērīsim elementa un masīva izmēru baitos.

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

Rezultāts ir:

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

Rādītāju arit­mē­ti­ka

Rādītāji paši par sevi nesatur in­for­mā­ci­ju par masīva izmēru vai garumu. Tomēr mēs varam izmantot rādītāju arit­mē­ti­ku kopā ar masīva elementu adresēm, lai noteiktu C masīva garumu.

Sintakse

data_type arr_length = *(&arr + 1) - arr;
c
  • &arr: Tas izveido rādītāju, kas norāda uz visu elementu masīvu.
  • (&arr + 1): Šeit rādītājs, kas norāda uz masīvu arr, tiek pa­lie­li­nāts par 1. Tā kā arr ir masīvs, tas nozīmē, ka rādītājs norādīs uz nākamo secīgo masīvu, kas ir tāda paša tipa kā arr.

Piemērs

Izteiksme *(&arr + 1) - arr aprēķina starpību starp rādītāju, kas norāda uz nākamo masīvu &arr + 1, un rādītāju, kas norāda uz sākotnējā masīva pirmo elementu. Šajā gadījumā “nākamā” atmiņas zona ir pirmā masīva beigas. Rezultātā iegūtā starpība ir vienāda ar elementu skaitu masīvā.

#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

Rezultāts:

Number of elements in the array: 5
c

Cikli

Vēl viena metode masīva garuma no­teik­ša­nai C valodā ir izmantot for cilpu. Šī metode ietver masīva iterāciju un tajā esošo elementu skaita skai­tī­ša­nu. Lai izmantotu šo metodi, masīvam, kura garumu vēlaties noteikt, jābūt tajā pašā koda jomā, kurā atrodas for cilpa, ko iz­man­to­jat tā garuma no­teik­ša­nai.

Piemērs

Šeit cilpa palielina skai­tī­tā­ju arrayLength par katru elementu, kas tiek nodots tālāk. No­sa­cī­jums i < sizeof(arr) / sizeof(arr[0]) nodrošina, ka cilpa darbojas tikai tad, ja masīvā ir elementi.

#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

Rezultāts:

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