mida_t és un tipus de dades enter sense signar que es defineix en diversos fitxers de capçalera com ara:
, , , , ,>
És un tipus que s'utilitza per representar la mida dels objectes en bytes i, per tant, s'utilitza com a tipus de retorn pel mida de operador . Es garanteix que serà prou gran com per contenir la mida de l'objecte més gran que el sistema amfitrió pot gestionar. Bàsicament, la mida màxima permesa depèn del compilador; si el compilador és de 32 bits, és simplement un typedef (és a dir, àlies) per int sense sign però si el compilador és de 64 bits, seria un typedef per sense signar molt llarg . El mida_t el tipus de dades mai és negatiu.
Per tant, moltes funcions de biblioteca C com malloc, memcpy i strlen declaren els seus arguments i retornen el tipus com mida_t . Per exemple,
C
cadena invertida java
// 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);> |
>
>
mida_t o qualsevol tipus sense signar es pot veure com a variable de bucle, ja que les variables de bucle solen ser majors o iguals a 0.
Nota: Quan fem servir a mida_t objecte, ens hem d'assegurar que en tots els contextos que s'utilitza, inclosa l'aritmètica, només volem valors no negatius. Per exemple, el programa següent donaria sens dubte el resultat inesperat:
Exemple 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]); }>>> |
entrada java
>Output Infinite loop and then segmentation fault>
Exemple 2
- El tipus de dades size_t en C és un tipus d'enter sense signe que s'utilitza per representar la mida dels objectes en bytes. Es defineix a la capçalera stddef.h i s'utilitza habitualment per representar la mida de matrius, blocs de memòria i cadenes.
- Aquí hi ha un exemple de programa que demostra l'ús de 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;> }> |
>
>
- en aquest programa, size_t s'utilitza per emmagatzemar la mida de la matriu en bytes.
- L'operador sizeof s'utilitza per determinar la mida de la matriu, que després s'emmagatzema a la variable de mida del tipus size_t. L'especificador de format %lu s'utilitza per imprimir el valor de size_t, que és un nombre enter llarg sense signe.
- Les sortides del programa La mida de la matriu és: 20, que és el nombre de bytes que ocupa la matriu (5 elements * 4 bytes per element).
Avantatges d'utilitzar size_t a la programació C:
- Portabilitat : El tipus de dades size_t es defineix a la capçalera stddef.h, que forma part de la biblioteca estàndard C. Si feu servir size_t, podeu assegurar-vos que el vostre codi sigui portàtil a diferents plataformes i compiladors.
- Sense signar : size_t és un tipus d'enter sense signe, el que significa que pot representar mides fins a la mida màxima dels enters sense signe. Això és útil quan es tracta de matrius i blocs de memòria, ja que les mides mai poden ser negatives.
- Rendiment : size_t s'acostuma a implementar com un tipus d'enter ràpid i eficaç, i utilitzar-lo pot donar lloc a un millor rendiment que utilitzar altres tipus d'entiers.
- Intenció clara: L'ús de size_t deixa clar al lector del vostre codi que esteu tractant amb mides i no amb altres tipus d'enters. Això fa que el codi sigui més fàcil d'entendre i menys propens a errors.
- Normalització : En utilitzar size_t, esteu seguint un estàndard àmpliament utilitzat i acceptat, que fa que el vostre codi sigui més llegible i fàcil de mantenir per a altres programadors.
- Interoperabilitat : size_t s'utilitza àmpliament en moltes biblioteques i API, i utilitzar-lo al vostre codi permet una integració més fàcil amb altres codis.