# Kā noteikt masīva garumu C valodā

C valodā varat uzticami noteikt masīvu garumu, izmantojot dažādas metodes. Tas atvieglo masīvu dinamisku pārvaldību un pielāgošanos 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ā. Šī informācija ir ļoti svarīga, lai piekļūtu atsevišķiem elementiem masīvā, pārskatītu to vai veiktu manipulācijas. Kad jūs deklarējat masīvu C valodā, atmiņa elementiem 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 noteikšanai, tāpēc tas jānosaka manuāli.

Visbiežāk izmantotās metodes ir:

- **`sizeof()`**
- **Rādītāju aritmētika**
- **Cikli**

## `sizeof()`

`sizeof()` operators C valodā. Tas kompilācijas laikā nosaka **datu tipa vai mainīgā lielumu baitos**. Operatora `sizeof` atgriešanas tips ir `size_t`, nepārrakstāms vesels skaitlis, kas attēlo lielumu baitos. C valodā var izmantot arī funkciju `sizeof()`, lai aprēķinā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.

```c
data_type arrayLength = sizeof(array_name) / sizeof(array_name[index]);
```

- **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 izteiksmes apgalvojums 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 izmantosim `sizeof()`, lai noteiktu masīva `myArray` izmēru, kā arī atsevišķa elementa izmēru. Ar šo informāciju 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.

```c
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;
}
```

Rezultāts ir:

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

## Rādītāju aritmētika

Rādītāji paši par sevi nesatur informāciju par masīva izmēru vai garumu. Tomēr mēs varam izmantot rādītāju aritmētiku kopā ar **masīva elementu adresēm**, lai noteiktu C masīva garumu.

### Sintakse

```c
data_type arr_length = *(&arr + 1) - arr;
```

- **`&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 palielinā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ā.

```c
#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;
}
```

Rezultāts:

```c
Number of elements in the array: 5
```

## Cikli

Vēl viena metode masīva garuma noteikšanai C valodā ir izmantot **for cilpu**. Šī metode ietver masīva iterāciju un tajā esošo elementu skaita skaitīšanu. Lai izmantotu šo metodi, masīvam, kura garumu vēlaties noteikt, jābūt tajā pašā koda jomā, kurā atrodas for cilpa, ko izmantojat tā garuma noteikšanai.

### Piemērs

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

```c
#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;
}
```

Rezultāts:

```c
Number of elements in the array: 8
```


This is a markdown version of: [https://www.ionos.com/lv-lv/digitalguide/timekla-vietnes/timekla-izstrade/c-masiva-garums/](https://www.ionos.com/lv-lv/digitalguide/timekla-vietnes/timekla-izstrade/c-masiva-garums/) for AI/LLM consumption.