storlek_t är en osignerad heltalsdatatyp som definieras i olika rubrikfiler som:
, , , , ,>
Det är en typ som används för att representera storleken på objekt i byte och används därför som returtyp av storlek av operatör . Det är garanterat tillräckligt stort för att innehålla storleken på det största objektet som värdsystemet kan hantera. I grund och botten är den maximala tillåtna storleken beroende av kompilatorn; om kompilatorn är 32 bitar så är den helt enkelt en typedef (dvs alias) för osignerad int men om kompilatorn är 64 bitar så skulle den vara en typedef för osignerad lång lång . De storlek_t datatypen är aldrig negativ.
Därför många C-biblioteksfunktioner som malloc, memcpy och strlen deklarera sina argument och returnera typ som storlek_t . Till exempel,
C
vad är uri
// 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);> |
>
>
storlek_t eller någon osignerad typ kan ses användas som loopvariabel eftersom loopvariabler vanligtvis är större än eller lika med 0.
Notera: När vi använder en storlek_t objekt måste vi se till att vi i alla sammanhang det används, inklusive aritmetik, bara vill ha icke-negativa värden. Till exempel skulle följande program definitivt ge det oväntade resultatet:
Exempel 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]); }> |
Java typ av variabel
>
>
java ersätt tecken i sträng
Output Infinite loop and then segmentation fault>
Exempel 2
- Datatypen size_t i C är en heltalstyp utan tecken som används för att representera storleken på objekt i byte. Det definieras i stddef.h-huvudet och används vanligtvis för att representera storleken på arrayer, minnesblock och strängar.
- Här är ett exempelprogram som visar användningen 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;> }> |
>
>
- i detta program används size_t för att lagra storleken på arrayen i byte.
- Operatorn sizeof används för att bestämma storleken på arrayen, som sedan lagras i storleksvariabeln av typen size_t. Formatspecifikationen %lu används för att skriva ut värdet på size_t, som är ett långt heltal utan tecken.
- Programmets utdata. Storleken på arrayen är: 20, vilket är antalet byte som upptas av arrayen (5 element * 4 byte per element).
Fördelar med att använda size_t i C-programmering:
- Bärbarhet : Datatypen size_t definieras i rubriken stddef.h, som är en del av C-standardbiblioteket. Genom att använda size_t kan du säkerställa att din kod är portabel över olika plattformar och kompilatorer.
- Osignerad : size_t är en heltalstyp utan tecken, vilket betyder att den kan representera storlekar upp till den maximala storleken för heltal utan tecken. Detta är användbart när man hanterar arrayer och minnesblock, eftersom storlekar aldrig kan vara negativa.
- Prestanda : size_t implementeras vanligtvis som en snabb och effektiv heltalstyp, och att använda den kan resultera i bättre prestanda än att använda andra heltalstyper.
- Tydlig avsikt: Att använda size_t gör det klart för läsaren av din kod att du har att göra med storlekar och inte andra typer av heltal. Detta gör koden lättare att förstå och mindre benägen för fel.
- Standardisering : Genom att använda size_t följer du en allmänt använd och accepterad standard, vilket gör din kod mer läsbar och underhållbar för andra programmerare.
- Interoperabilitet : size_t används ofta i många bibliotek och API:er, och att använda den i din kod möjliggör enklare integration med annan kod.