størrelse_t er en usigneret heltalsdatatype, der er defineret i forskellige overskriftsfiler såsom:
, , , , ,>
Det er en type, der bruges til at repræsentere størrelsen af objekter i bytes og bruges derfor som returtype af størrelse af operatør . Det er garanteret stort nok til at indeholde størrelsen af det største objekt, værtssystemet kan håndtere. Grundlæggende er den maksimalt tilladte størrelse afhængig af compileren; hvis compileren er 32 bit, så er den simpelthen en typedef (dvs. alias) for usigneret int men hvis compileren er 64 bit så ville den være en typedef for usigneret lang lang . Det størrelse_t datatypen er aldrig negativ.
Derfor er mange C-biblioteksfunktioner som malloc, memcpy og strlen erklære deres argumenter og returnere type som størrelse_t . For eksempel,
C
hashmap
// 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 enhver type uden fortegn kan ses brugt som loop-variabel, da loop-variabler typisk er større end eller lig med 0.
Bemærk: Når vi bruger en størrelse_t objekt, skal vi sikre os, at vi i alle de sammenhænge, det bruges, inklusive aritmetik, kun ønsker ikke-negative værdier. For eksempel ville følgende program helt sikkert give det uventede resultat:
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]); }> |
if else statements java
>
>
Output Infinite loop and then segmentation fault>
Eksempel 2
- Datatypen size_t i C er en heltalstype uden fortegn, der bruges til at repræsentere størrelsen af objekter i bytes. Det er defineret i stddef.h-headeren og bruges almindeligvis til at repræsentere størrelsen af arrays, hukommelsesblokke og strenge.
- Her er et eksempelprogram, der demonstrerer brugen af 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;> }> |
>
binært søgetræ vs binært træ
>
- i dette program bruges size_t til at gemme størrelsen af arrayet i bytes.
- Størrelsesoperatoren bruges til at bestemme størrelsen af arrayet, som derefter lagres i størrelsesvariablen af typen size_t. %lu-formatspecifikationen bruges til at udskrive værdien af size_t, som er et langt heltal uden fortegn.
- Programmets output Størrelsen af arrayet er: 20, som er antallet af bytes optaget af arrayet (5 elementer * 4 bytes pr. element).
Fordele ved at bruge size_t i C-programmering:
- Bærbarhed : Datatypen size_t er defineret i stddef.h-headeren, som er en del af C-standardbiblioteket. Ved at bruge size_t kan du sikre, at din kode er bærbar på tværs af forskellige platforme og compilere.
- Usigneret : size_t er en heltalstype uden fortegn, hvilket betyder, at den kan repræsentere størrelser op til den maksimale størrelse af heltal uden fortegn. Dette er nyttigt, når du har at gøre med arrays og hukommelsesblokke, da størrelser aldrig kan være negative.
- Ydeevne : size_t er normalt implementeret som en hurtig og effektiv heltalstype, og brugen af den kan resultere i bedre ydeevne end at bruge andre heltalstyper.
- Klar hensigt: Brug af size_t gør det klart for læseren af din kode, at du har med størrelser at gøre og ikke andre typer heltal. Dette gør koden lettere at forstå og mindre udsat for fejl.
- Standardisering : Ved at bruge size_t følger du en meget brugt og accepteret standard, som gør din kode mere læsbar og vedligeholdelig for andre programmører.
- Interoperabilitet : size_t er meget udbredt i mange biblioteker og API'er, og brugen af det i din kode giver mulighed for lettere integration med anden kode.