koko_t on etumerkitön kokonaislukutietotyyppi, joka on määritelty useissa otsikkotiedostoissa, kuten:
, , , , ,>
Se on tyyppi, jota käytetään edustamaan objektien kokoa tavuina, ja siksi sitä käytetään palautustyyppinä koko operaattori . Se on taatusti riittävän suuri mahtumaan isäntäjärjestelmän käsittelemän suurimman objektin koon. Periaatteessa suurin sallittu koko riippuu kääntäjästä; jos kääntäjä on 32-bittinen, se on yksinkertaisesti typedef(eli alias) allekirjoittamaton int mutta jos kääntäjä on 64-bittinen, se olisi typedef for allekirjoittamaton pitkä pitkä . The koko_t tietotyyppi ei ole koskaan negatiivinen.
Siksi monet C-kirjasto toimivat kuten malloc, memcpy ja strlen ilmoittaa argumenttinsa ja palauttaa tyypin muodossa koko_t . Esimerkiksi,
C
merkintä kuvilla
// 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);> |
>
>
koko_t tai mitä tahansa etumerkitöntä tyyppiä voidaan käyttää silmukkamuuttujana, koska silmukkamuuttujat ovat tyypillisesti suurempia tai yhtä suuria kuin 0.
Huomautus: Kun käytämme a koko_t objekti, meidän on varmistettava, että kaikissa yhteyksissä, joita sitä käytetään, mukaan lukien aritmetiikka, haluamme vain ei-negatiivisia arvoja. Esimerkiksi seuraava ohjelma antaisi varmasti odottamattoman tuloksen:
Esimerkki 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]); }> |
suorituskyvyn testaus
>
>
Output Infinite loop and then segmentation fault>
Esimerkki 2
- C:n size_t-tietotyyppi on etumerkitön kokonaislukutyyppi, jota käytetään edustamaan objektien kokoa tavuina. Se määritellään stddef.h-otsikossa, ja sitä käytetään yleisesti edustamaan taulukoiden, muistilohkojen ja merkkijonojen kokoa.
- Tässä on esimerkkiohjelma, joka osoittaa size_t:n käytön:
C
gigatavun ja megatavun ero
#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;> }> |
>
>
- tässä ohjelmassa koko_t käytetään tallentamaan taulukon koko tavuina.
- Koko-operaattoria käytetään määrittämään taulukon koko, joka sitten tallennetaan kokomuuttujaan, jonka tyyppi on koko_t. Muotomääritteen %lu käytetään tulostamaan koko_t:n arvo, joka on etumerkitön pitkä kokonaisluku.
- Ohjelman tulosteet Matriisin koko on: 20, mikä on taulukon käyttämien tavujen määrä (5 elementtiä * 4 tavua per elementti).
Koko_t:n käytön edut C-ohjelmoinnissa:
- Siirrettävyys : Tietotyyppi size_t määritetään stddef.h-otsikossa, joka on osa C-standardikirjastoa. Käyttämällä size_t:tä voit varmistaa, että koodisi on siirrettävissä eri alustoihin ja kääntäjiin.
- Allekirjoittamaton : koko_t on etumerkitön kokonaislukutyyppi, mikä tarkoittaa, että se voi edustaa etumerkittömien kokonaislukujen enimmäiskokoa. Tämä on hyödyllistä käsiteltäessä taulukoita ja muistilohkoja, koska koot eivät voi koskaan olla negatiivisia.
- Esitys : size_t on yleensä toteutettu nopeana ja tehokkaana kokonaislukutyyppinä, ja sen käyttäminen voi johtaa parempaan suorituskykyyn kuin muiden kokonaislukutyyppien käyttäminen.
- Selkeä tarkoitus: Koko_t:n käyttäminen tekee koodisi lukijalle selväksi, että kyseessä on koko, et muun tyyppinen kokonaisluku. Tämä tekee koodista helpompi ymmärtää ja vähemmän alttiita virheille.
- Standardointi : Käyttämällä size_t:tä noudatat yleisesti käytettyä ja hyväksyttyä standardia, mikä tekee koodistasi luettavamman ja ylläpidettävämmän muille ohjelmoijille.
- Yhteentoimivuus : size_t on laajalti käytössä monissa kirjastoissa ja API:issa, ja sen käyttäminen koodissa mahdollistaa helpomman integroinnin muun koodin kanssa.