dydis_t yra nepasirašyto sveikojo skaičiaus duomenų tipas, apibrėžtas įvairiuose antraštės failuose, pavyzdžiui:
, , , , ,>
Tai tipas, naudojamas objektų dydžiui baitais pavaizduoti, todėl jį naudoja kaip grąžinimo tipą dydis operatorius . Garantuojama, kad jis bus pakankamai didelis, kad tilptų didžiausio objekto, kurį gali valdyti pagrindinė sistema, dydis. Iš esmės didžiausias leistinas dydis priklauso nuo kompiliatoriaus; jei kompiliatorius yra 32 bitų, tai yra tiesiog typedef (t. y. pseudonimas), skirtas nepasirašytas tarpt bet jei kompiliatorius yra 64 bitų, tai būtų tipodef nepasirašytas ilgas ilgas . The dydis_t duomenų tipas niekada nėra neigiamas.
Todėl daugelis C bibliotekos funkcijų kaip malloc, memcpy ir strlen deklaruokite savo argumentus ir grąžinkite tipą kaip dydis_t . Pavyzdžiui,
C
miegoti js
// Declaration of various standard library functions.> // Here argument of 'n' refers to maximum blocks that can be> // allocated which is guaranteed to be non-negative.> void>*>malloc>(>size_t> n);> // While copying 'n' bytes from 's2' to 's1'> // n must be non-negative integer.> void>*>memcpy>(>void>* s1,>void> const>* s2,>size_t> n);> // strlen() uses size_t because the length of any string> // will always be at least 0.> size_t> strlen>(>char> const>* s);> |
>
>
dydis_t arba bet koks nepaženklintas tipas gali būti naudojamas kaip ciklo kintamasis, nes ciklo kintamieji paprastai yra didesni arba lygūs 0.
Pastaba: Kai naudojame a dydis_t objektas, turime įsitikinti, kad visuose kontekstuose, kuriuose jis naudojamas, įskaitant aritmetiką, norime tik neneigiamų reikšmių. Pavyzdžiui, ši programa tikrai duotų netikėtą rezultatą:
1 pavyzdys
C
// C program to demonstrate that size_t or> // any unsigned int type should be used> // carefully when used in a loop.> #include> #define N 10> int> main()> {> >int> a[N];> >// This is fine.> >for> (>size_t> n = 0; n a[n] = n; } // But reverse cycles are tricky for unsigned // types as they can lead to infinite loops. for (size_t n = N - 1; n>= 0; --n) printf('%d ', a[n]); }> |
java localdatetime
>
>
Output Infinite loop and then segmentation fault>
2 pavyzdys
- Duomenų tipas size_t C yra beženklio sveikojo skaičiaus tipas, naudojamas objektų dydžiui baitais pavaizduoti. Jis apibrėžiamas stddef.h antraštėje ir dažniausiai naudojamas masyvų, atminties blokų ir eilučių dydžiui pavaizduoti.
- Štai programos pavyzdys, rodantis, kaip naudojamas dydis_t:
C
#include> #include> int> main()> {> >int> array[5] = { 1, 2, 3, 4, 5 };> >size_t> size =>sizeof>(array);> >printf>(>'The size of the array is: %lu
'>, size);> >return> 0;> }> |
linux failų sistema
>
>
- šioje programoje dydis_t naudojamas masyvo dydžiui baitais išsaugoti.
- Operatorius sizeof naudojamas masyvo dydžiui nustatyti, kuris vėliau saugomas dydžio kintamajame, kurio tipas dydis_t. Formato specifikacija %lu naudojamas spausdinti dydžio_t reikšmę, kuri yra beženklis ilgas sveikasis skaičius.
- Programos išėjimai Masyvo dydis yra: 20, tai yra masyvo užimtų baitų skaičius (5 elementai * 4 baitai vienam elementui).
„Size_t“ naudojimo C programavimo privalumai:
- Perkeliamumas : Duomenų tipas size_t yra apibrėžtas stddef.h antraštėje, kuri yra C standartinės bibliotekos dalis. Naudodami size_t galite užtikrinti, kad jūsų kodas būtų nešiojamas įvairiose platformose ir kompiliatoriuose.
- Nepasirašytas : dydis_t yra beženklio sveikojo skaičiaus tipas, o tai reiškia, kad jis gali nurodyti dydžius iki didžiausio nežymių sveikųjų skaičių dydžio. Tai naudinga dirbant su masyvais ir atminties blokais, nes dydžiai niekada negali būti neigiami.
- Spektaklis : size_t paprastai įgyvendinamas kaip greitas ir efektyvus sveikųjų skaičių tipas, o naudojant jį galima pasiekti geresnį našumą nei naudojant kitus sveikųjų skaičių tipus.
- Aiškus tikslas: Naudojant size_t kodo skaitytojui tampa aišku, kad kalbate apie dydžius, o ne su kitais sveikųjų skaičių tipais. Dėl to kodas lengviau suprantamas ir mažiau klaidų.
- Standartizavimas : Naudodami size_t, laikotės plačiai naudojamo ir priimto standarto, todėl jūsų kodas tampa lengviau skaitomas ir lengviau prižiūrimas kitiems programuotojams.
- Sąveika : size_t yra plačiai naudojamas daugelyje bibliotekų ir API, o naudojant jį kode galima lengviau integruoti su kitu kodu.