Kaip nustatyti masyvo ilgį C kalboje
C kalboje galima patikimai nustatyti masyvų ilgį naudojant įvairius metodus. Tai palengvina dinamišką masyvų valdymą ir prisitaikymą 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 informacija yra labai svarbi norint pasiekti atskirus masyvo elementus, juos peržiūrėti ar atlikti manipuliacijas. Kai deklaruojate masyvą C kalboje, atminties elementams masyve yra skiriama RAM atmintyje (t. y. nuosekliai, be tarpų). C kalboje nėra įdiegtos funkcijos masyvo ilgį nustatyti, todėl jį reikia nustatyti rankiniu būdu.
Dažniausiai naudojami metodai yra:
sizeof()- Rodyklės aritmetika
- Ciklai
sizeof()
sizeof() operatorius C kalboje. Jis nustato duomenų tipo arba kintamojo dydį baitais kompiliavimo metu. Operatoriaus sizeof grąžinamojo 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 apskaičiuoti 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 pavadinimą.
- 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 nustatytume masyvo myArray dydį ir vieno elemento dydį. Turėdami šią informaciją, galime apskaičiuoti elementų skaičių masyve, padalindami 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;
}cRezultatas yra:
Total size of the array: 20 bytes
Size of a single element: 4 bytes
Number of elements in the array: 5cRodyklės aritmetika
Pačios rodyklės neapima informacijos apie masyvo dydį ar ilgį. Tačiau galime naudoti rodyklių aritmetiką kartu su masyvo elementų adresais, kad nustatytume 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, padidinama 1. Kadangiarryra masyvas, tai reiškia, kad rodyklė nukreips į kitą iš eilės einantį masyvą, kuris yra to paties tipo kaiparr.
Pavyzdys
Išraiška *(&arr + 1) - arr apskaičiuoja 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;
}cIšvestis:
Number of elements in the array: 5cFor 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čiavimą. 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 perduodamas. 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;
}cIšvestis:
Number of elements in the array: 8c