størrelse_t er en usignert heltallsdatatype som er definert i ulike overskriftsfiler som:
, , , , ,>
Det er en type som brukes til å representere størrelsen på objekter i byte og brukes derfor som returtype av størrelsen av operatør . Det er garantert stort nok til å inneholde størrelsen på det største objektet vertssystemet kan håndtere. I utgangspunktet er maksimalt tillatt størrelse avhengig av kompilatoren; hvis kompilatoren er 32 bit, er den ganske enkelt en typedef (dvs. alias) for usignert int men hvis kompilatoren er 64 bit, vil den være en typedef for usignert lang lang . De størrelse_t datatypen er aldri negativ.
Derfor er mange C-biblioteksfunksjoner som malloc, memcpy og strlen erklære sine argumenter og returnere type som størrelse_t . For eksempel,
C
cast sql
// 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);> |
>
>
størrelse_t eller en hvilken som helst usignert type kan sees på brukt som sløyfevariabel da sløyfevariabler vanligvis er større enn eller lik 0.
Merk: Når vi bruker en størrelse_t objekt, må vi sørge for at vi i alle sammenhenger det brukes, inkludert aritmetikk, kun vil ha ikke-negative verdier. For eksempel vil følgende program definitivt gi det uventede resultatet:
Eksempel 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]); }> |
sett skilletegn java
>
>
Output Infinite loop and then segmentation fault>
Eksempel 2
- Datatypen size_t i C er en heltallstype uten fortegn som brukes til å representere størrelsen på objekter i byte. Den er definert i stddef.h-overskriften og brukes ofte til å representere størrelsen på arrays, minneblokker og strenger.
- Her er et eksempelprogram som demonstrerer bruken av size_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;> }> |
>
søkemotor og eksempler
>
- i dette programmet brukes size_t til å lagre størrelsen på matrisen i byte.
- Størrelsesoperatoren brukes til å bestemme størrelsen på matrisen, som deretter lagres i størrelsesvariabelen av typen size_t. %lu-formatspesifikasjonen brukes til å skrive ut verdien av size_t, som er et langt heltall uten fortegn.
- Programmet gir ut Størrelsen på matrisen er: 20, som er antall byte okkupert av matrisen (5 elementer * 4 byte per element).
Fordeler med å bruke size_t i C-programmering:
- Bærbarhet : Datatypen size_t er definert i stddef.h-overskriften, som er en del av C-standardbiblioteket. Ved å bruke size_t kan du sikre at koden din er portabel på tvers av forskjellige plattformer og kompilatorer.
- Usignert : size_t er en heltallstype uten fortegn, noe som betyr at den kan representere størrelser opp til maksimalstørrelsen for heltall uten fortegn. Dette er nyttig når du arbeider med matriser og minneblokker, siden størrelser aldri kan være negative.
- Opptreden : size_t er vanligvis implementert som en rask og effektiv heltallstype, og bruk av den kan resultere i bedre ytelse enn å bruke andre heltallstyper.
- Klar hensikt: Å bruke size_t gjør det klart for leseren av koden din at du har å gjøre med størrelser og ikke andre typer heltall. Dette gjør koden lettere å forstå og mindre utsatt for feil.
- Standardisering : Ved å bruke size_t følger du en mye brukt og akseptert standard, som gjør koden din mer lesbar og vedlikeholdbar for andre programmerere.
- Interoperabilitet : size_t er mye brukt i mange biblioteker og APIer, og å bruke den i koden din gjør det enklere å integrere med annen kode.