C Array length
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.
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 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.
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;
}cRezultāts ir:
Total size of the array: 20 bytes
Size of a single element: 4 bytes
Number of elements in the array: 5cRā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
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īvuarr, tiek palielināts par 1. Tā kāarrir 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;
}cRezultāts:
Number of elements in the array: 5cCikli
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.
#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;
}cRezultāts:
Number of elements in the array: 8c