logo

Koks yra size_t duomenų tipas C?

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.