C Programiranje

Velikost operatorja v jeziku C

Velikost operatorja v jeziku C
V tem članku bomo izvedeli več o velikosti operaterja v jeziku C. Je široko uporabljen enolični operater pri razvoju vdelane programske opreme, ki nam pomaga ugotoviti velikost operanda. Zato nam vrnjena vrednost velikosti operaterja pomaga razumeti število bajtov, dodeljenih v računalniškem pomnilniku za shranjevanje določene spremenljivke ali podatkovnega tipa.

Razumevanje velikosti:

Preden se poglobimo v razpravo o velikosti operaterja, najprej razumemo pomen operaterja. Operater je predstavljen z žetonom ali simbolom, ki se uporablja za izvajanje operacije, kot je seštevanje, odštevanje, množenje, deljenje itd. na vrednosti ali spremenljivke (operandi). Na primer, "*" je simbol, ki se uporablja za predstavitev operacije množenja in deluje na dva operanda (rezultat = a * b;). To je primer binarnega operatorja.

Če pa operater deluje samo na enem operandu, takšnega operaterja imenujemo unarni operater. Operator sizeof je eden od unarnih operaterjev, ki obstajajo v programskem jeziku C in očitno deluje samo na enem operandu. Operator sizeof vrne velikost operanda. To pomeni, da lahko iz vrnjene vrednosti operatorja Sizeof jasno povemo, koliko bajtov je dodeljenih določenemu operandu v pomnilniku računalnika.

Računalniški pomnilnik je skupek pomnilniških enot (tj.e. bajt). Ko sizeof (int) v določenem računalniškem sistemu vrne štiri, lahko rečemo, da celoštevilčna spremenljivka zavzame 4 bajte, da zadrži svojo vrednost v pomnilniku določenega računalniškega sistema. Upoštevajte tudi, da je vrnjena vrednost velikosti operaterja odvisna tudi od strojev, ki jih uporabljate (32-bitni sistem ali 64-bitni sistem).

Sintaksa:

Velikost (vrsta)
Velikost (izraz)

Vrnjena vrsta sizeof je size_t.

Primeri:

Ker zdaj razumemo velikost operaterja in poznamo skladnjo, si oglejmo nekaj primerov, ki nam bodo pomagali bolje razumeti koncept.

Velikost vgradnih tipov (primer1.c):

V tem programu bomo videli, kako deluje operator sizeof za vgrajene podatkovne tipe, kot so int, char, float, double. Oglejmo si program in rezultate.

#include
int main ()

printf ("Velikost znaka =% ld \ n", sizeof (char));
printf ("Velikost int =% ld \ n", sizeof (int));
printf ("Velikost float =% ld \ n", sizeof (float));
printf ("Velikost dvojnice =% ld \ n \ n", velikost (dvojna));
printf ("Velikost kratkega int =% ld \ n", sizeof (kratkega int));
printf ("Velikost dolgega int =% ld \ n", sizeof (dolga int));
printf ("Velikost dolge dolge int =% ld \ n", velikost dolge (dolga dolga int));
printf ("Velikost dolge dvojne =% ld \ n", velikost (dolga dvojna));
vrnitev 0;

Velikost matrike (primer2.c)

V tem programu bomo videli, kako uporabiti operator sizeof za različne vrste matrike. V primeru matrike se vrne operator sizeof (št. elementov v polju * Sizeof (vrsta polja)). Ko na primer razglasimo celoštevilsko vrsto z 10 elementi (int SmartPhones [10];), se vrne sizeof (pametni telefoni):

(Št. elementov v pametnih telefonih * sizeof (int)) = (10 * 4) = 40

Oglejmo si program in rezultate.

#include
int main ()

int SmartPhones [10];
char SmartPhoneNames [10];
dvojni SmartPhonesPrice [10];
printf ("Velikost int =% ld \ n", sizeof (int));
printf ("Velikost znaka =% ld \ n", sizeof (char));
printf ("Velikost dvojnika =% ld \ n", velikost (dvojno));
/ * Ugotovite velikost polja * /
printf ("Velikost pametnih telefonov [10] =% ld \ n", velikost (pametnih telefonov));
printf ("Velikost imen pametnih telefonov [10] =% ld \ n", velikost (imen pametnih telefonov));
printf ("Velikost SmartPhonesPrice [10] =% ld \ n", sizeof (SmartPhonesPrice));
vrnitev 0;

Velikost uporabniško določenih vrst (primer3.c):

V tem primeru bomo videli, kako uporabiti operator sizeof za uporabniško določene tipe podatkov, kot sta struktura in zveza. Uporabimo program in razumemo rezultate.

Zdaj, ko pogledamo program, lahko ročno izračunamo velikost SmartPhoneType. Kot lahko vidite spodaj, je SmartPhoneType struktura in vsebuje naslednje elemente:

  • Število spremenljivk vrste znaka = 1 [ime_sp_]
  • Število spremenljivk celoštevilskega tipa = 1 [sp_version]
  • Število spremenljivk tipa float = 3 [sp_length, sp_width, sp_height]

Iz primera-1 smo videli, da:

    • Velikost znaka je 1 bajt
    • Velikost celotnega števila je 4 bajta
    • Velikost plovca je 4 bajte

Če torej seštejemo velikost vseh elementov v strukturi, bi lahko dobili velikost strukture, tj.e. SmartPhoneType. Zato mora biti velikost strukture = (1 + 4 + 4 + 4 + 4) bajtov = 17 bajtov. Vendar pa v izhodu programa piše, da je velikost strukture 20. Dodatni 3 bajti (ime_ sp_ime, ki je znak, zavzame 4 bajte namesto 1 bajta), dodeljeni strukturi zaradi oblazinjenja strukture.

#include
/ * Ustvarite uporabniško določen tip strukture - SmartPhoneType * /
struct SmartPhoneType

char sp_name;
int sp_version;
plavajoča sp_length;
float sp_width;
plavajoča sp_height;
SmartPhone;
/ * Določite uporabniško določeno vrsto zveze - SmartPhoneUnionType * /
Union SmartPhoneUnionType

char sp_name;
int sp_version;
float sp_length;
float sp_width;
plavajoča sp_height;
SmartPhone_u;
int main ()

/ * Ugotovite velikost strukture in združitve * /
printf ("Velikost strukture =% ld \ n", velikost (SmartPhone));
printf ("Velikost zveze =% ld \ n", velikost (SmartPhone_u));
vrnitev 0;

Velikost spremenljivk (primer4.c):

Ta primer programa ponazarja, da je operator sizeof sposoben sprejeti tudi spremenljivko in vrniti velikost spremenljivke.

#include
int main ()

/ * Deklariraj spremenljivko in matriko char, int, float in double type * /
char var_a, var_b [20];
int var_c, var_d [20];
plovec var_e, var_f [20];
dvojno var_g, var_h [20];
/ * Ugotovite velikost spremenljivk in matrike.
Ta program dokazuje, da lahko tudi spremenljivka
se uporablja kot velikost operanda operaterja * /
/ * velikost char, spremenljivka char in matrika char * /
printf ("Velikost znaka =% ld \ n", sizeof (char));
printf ("Velikost var_a =% ld \ n", sizeof (var_a));
printf ("Velikost var_b [20] =% ld \ n \ n", sizeof (var_b));
/ * velikost int, int spremenljivke in matrike int * /
printf ("Velikost int =% ld \ n", sizeof (int));
printf ("Velikost var_c =% ld \ n", sizeof (var_c));
printf ("Velikost var_d [20] =% ld \ n \ n", sizeof (var_d));
/ * velikost float, float variable in float array * /
printf ("Velikost float =% ld \ n", sizeof (float));
printf ("Velikost var_e =% ld \ n", sizeof (var_e));
printf ("Velikost var_f [20] =% ld \ n \ n", sizeof (var_f));
/ * velikost dvojne, dvojne spremenljivke in dvojne matrice * /
printf ("Velikost dvojnika =% ld \ n", velikost (dvojno));
printf ("Velikost var_g =% ld \ n", sizeof (var_g));
printf ("Velikost var_h [20] =% ld \ n", sizeof (var_h));
vrnitev 0;

Velikost izraza (primer5.c):

V tem primeru programa bomo pokazali, da lahko operator velikosti sprejme tudi izraz in vrne velikost nastalega izraza.

#include
int main ()

int var_a = 5, var_b = 3;
dvojni var_c = 2.5, var_d = 4.5;
printf ("Velikost int =% ld \ n", sizeof (int));
printf ("Velikost dvojnice =% ld \ n \ n", velikost (dvojna));
printf ("Velikost var_a * var_b =% ld \ n", sizeof (var_a * var_b));
printf ("Velikost var_c * var_d =% ld \ n", sizeof (var_c * var_d));
/ * Tu množimo celoštevilčno spremenljivko z dvojno spremenljivko.
Zato bo operator sizeof vrnil največjo velikost
spremenljivka i.e. spremenljivka dvojnega tipa.* /
printf ("Velikost var_a * var_c =% ld \ n", sizeof (var_a * var_c));
vrnitev 0;

Praktična uporaba velikosti (primer6.c):

Ta primer programa vam bo pomagal razumeti praktični primer uporabe velikosti operaterja. Operator Sizeof je zelo koristen pri dodeljevanju dinamičnega pomnilnika s kopice z uporabo malloca. Oglejmo si program in rezultate.

#include
#include
typedef struct

char sp_name;
int sp_version;
plavajoča sp_length;
float sp_width;
plavajoča sp_height;
SmartPhoneType;
int main ()

/ * V spominu Heap dodelite pomnilnik za pet SmartPhoneType
spremenljivke.
* /
SmartPhoneType * SmartPhone_Ptr = (SmartPhoneType *) malloc (5 * velikost (SmartPhoneType));
če (SmartPhone_Ptr != NULL)

printf ("Pomnilnik dodeljen za pet spremenljivk strukture SmartPhoneType v
spomin kopice.\ n ");

drugače

printf ("Napaka pri dodeljevanju kopice pomnilnika!");

vrnitev 0;

Zaključek:

Sizeof je pomemben unarni operater v programskem jeziku C. Pomaga nam pri določanju velikosti primitivnih podatkovnih vrst, uporabniško določenih podatkovnih tipov, izrazov itd. v pomnilniku računalnika. Operator Sizeof ima pomembno vlogo pri dodeljevanju dinamičnega pomnilnika v jeziku C z uporabo malloc, calloc itd. v spominu kopice.

Vadnica Shadow of the Tomb Raider za Linux
Shadow of the Tomb Raider je dvanajsti dodatek k seriji Tomb Raider - franšiza akcijsko-pustolovskih iger, ki jo je ustvaril Eidos Montreal. Kritiki i...
Kako povečati FPS v Linuxu?
FPS pomeni Število sličic na sekundo. Naloga FPS je merjenje hitrosti sličic pri predvajanju video posnetkov ali igranih predstavah. Z enostavnimi bes...
Najboljše laboratorijske igre Oculus App
Če ste lastnik slušalk Oculus, morate biti seznanjeni s stranskim nalaganjem. Sideloading je postopek namestitve vsebine, ki ni shranjena v slušalke. ...