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.