logo

Kaj je podatkovni tip size_t v C?

velikost_t je nepredznačeni celoštevilski podatkovni tip, ki je definiran v različnih datotekah glave, kot so:

, , , , ,>

To je tip, ki se uporablja za predstavitev velikosti objektov v bajtih in ga zato uporablja kot povratni tip sizeof operater . Zagotovljeno je, da je dovolj velik, da vsebuje velikost največjega predmeta, ki ga lahko obravnava gostiteljski sistem. V bistvu je največja dovoljena velikost odvisna od prevajalnika; če je prevajalnik 32-bitni, je preprosto typedef (tj. vzdevek) za nepodpisano int če pa je prevajalnik 64-bitni, bi bil to typedef za nepodpisano dolgo dolgo . The velikost_t podatkovni tip ni nikoli negativen.
Zato mnoge knjižnice C delujejo kot malloc, memcpy in strlen deklariraj njihove argumente in povratni tip kot velikost_t . Na primer,



C








ustvarjanje seznama v Javi
// 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);>

>

>

velikost_t ali kateri koli nepredznačeni tip se lahko uporablja kot spremenljivka zanke, saj so spremenljivke zanke običajno večje ali enake 0.
Opomba: Ko uporabljamo a velikost_t objekta, se moramo prepričati, da v vseh kontekstih, v katerih se uporablja, vključno z aritmetiko, želimo le nenegativne vrednosti. Na primer, naslednji program bi zagotovo dal nepričakovan rezultat:

Primer 1

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]); }>

pretvori int v niz c++
>

>

  Output  Infinite loop and then segmentation fault>


Primer 2

  • Podatkovni tip size_t v C je celoštevilski tip brez predznaka, ki se uporablja za predstavitev velikosti objektov v bajtih. Definiran je v glavi stddef.h in se običajno uporablja za predstavitev velikosti nizov, pomnilniških blokov in nizov.
  • Tukaj je primer programa, ki prikazuje uporabo size_t:

C


numpy dnevnik



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

>

>

  • v tem programu se size_t uporablja za shranjevanje velikosti matrike v bajtih.
  • Operator sizeof se uporablja za določitev velikosti matrike, ki se nato shrani v spremenljivko velikosti tipa size_t. Specifikator formata %lu se uporablja za tiskanje vrednosti size_t, ki je nepredznačeno dolgo celo število.
  • Izhodi programa Velikost matrike je: 20, kar je število bajtov, ki jih zaseda matrika (5 elementov * 4 bajti na element).

Prednosti uporabe size_t v programiranju C:

  • Prenosljivost : Podatkovni tip size_t je definiran v glavi stddef.h, ki je del standardne knjižnice C. Z uporabo size_t lahko zagotovite, da je vaša koda prenosljiva na različne platforme in prevajalnike.
  • Nepodpisano : size_t je celoštevilski tip brez predznaka, kar pomeni, da lahko predstavlja velikosti do največje velikosti celih števil brez predznaka. To je uporabno pri delu z nizi in pomnilniškimi bloki, saj velikosti nikoli ne morejo biti negativne.
  • Izvedba : size_t je običajno implementiran kot hiter in učinkovit celoštevilski tip in njegova uporaba lahko povzroči boljšo zmogljivost kot uporaba drugih celih tipov.
  • Jasen namen: Uporaba size_t daje bralcu vaše kode jasno vedeti, da imate opravka z velikostmi in ne z drugimi vrstami celih števil. Tako je koda lažje razumljiva in manj nagnjena k napakam.
  • Standardizacija : Z uporabo size_t sledite široko uporabljenemu in sprejetemu standardu, zaradi česar je vaša koda bolj berljiva in vzdržljiva za druge programerje.
  • Interoperabilnost : size_t se pogosto uporablja v številnih knjižnicah in API-jih, njegova uporaba v vaši kodi pa omogoča lažjo integracijo z drugo kodo.