C Programiranje

Veličina operatora na C jeziku

Veličina operatora na C jeziku
U ovom ćemo članku naučiti o veličini operatora u C-u. Široko se koristi unarni operator u razvoju ugrađenog softvera, što nam pomaže da saznamo veličinu operanda. Stoga nam povratna vrijednost operatora sizeof pomaže razumjeti broj bajtova dodijeljenih u memoriji računala za čuvanje određene varijable ili tipa podataka.

Razumijevanje veličine:

Prije nego što uđemo u raspravu o veličini operatora, prvo shvatimo značenje operatora. Operator je predstavljen žetonom ili simbolom koji se koristi za izvođenje operacije kao što je zbrajanje, oduzimanje, množenje, dijeljenje itd. na vrijednosti ili varijable (operandi). Na primjer, "*" je simbol koji se koristi za predstavljanje operacije množenja i radi na dva operanda (rezultat = a * b;). Ovo je primjer binarnog operatora.

Međutim, ako operator radi samo na jednom operandu, takvog ćemo operatora nazvati unarnim operatorom. Operator sizeof jedan je od unarnih operatora koji postoje u programskom jeziku C i očito djeluje samo na jednom operandu. Operator sizeof vraća veličinu operanda. To znači da iz povratne vrijednosti operatora Sizeof možemo jasno reći koliko je bajtova dodijeljeno za držanje određenog operanda u memoriji računala.

Memorija računala je skup memorijskih jedinica (tj.e. bajt). Kada sizeof (int) vrati četiri u određenom računalnom sustavu, možemo reći da cjelobrojnoj varijabli treba 4 bajta da zadrži svoju vrijednost u memoriji tog određenog računalnog sustava. Također, imajte na umu da povratna vrijednost veličine operatora također ovisi o strojevima koje koristite (32-bitni sustav ili 64-bitni sustav).

Sintaksa:

Veličina (vrsta)
Veličina (izraz)

Vrsta povrata sizeof je size_t.

Primjeri:

Budući da razumijemo veličinu operatora i znamo sintaksu, pogledajmo nekoliko primjera koji će nam pomoći da koncept razumijemo na bolji način.

Veličina ugrađenih vrsta (primjer1.c):

U ovom programu vidjet ćemo kako operator sizeof radi za ugrađene tipove podataka poput int, char, float, double. Pogledajmo program i rezultate.

#include
int main ()

printf ("Veličina znaka =% ld \ n", veličina (char));
printf ("Veličina int =% ld \ n", veličina (int));
printf ("Veličina float-a =% ld \ n", sizeof (float));
printf ("Veličina dupla =% ld \ n \ n", veličina (dvostruka));
printf ("Veličina kratkog int =% ld \ n", veličina (kratkog int));
printf ("Veličina long int =% ld \ n", sizeof (long int));
printf ("Veličina long long int =% ld \ n", sizeof (long long int));
printf ("Veličina long double-a =% ld \ n", sizeof (long double));
return 0;

Sizeof za polje (primjer2.c)

U ovom programu vidjet ćemo kako koristiti operator sizeof za različite vrste polja. U slučaju niza, vratit će se operator sizeof (br. elemenata u polju * Sizeof (vrsta polja)). Na primjer, kada proglasimo polje s cijelim brojem od 10 elemenata (int SmartPhones [10];), vratit će se sizeof (pametni telefoni):

(Ne. elemenata u pametnim telefonima * sizeof (int)) = (10 * 4) = 40

Pogledajmo program i rezultate.

#include
int main ()

int SmartPhones [10];
char SmartPhoneNames [10];
dvostruki SmartPhonesPrice [10];
printf ("Veličina int =% ld \ n", veličina (int));
printf ("Veličina znaka =% ld \ n", veličina (char));
printf ("Veličina dvostrukog =% ld \ n", veličina (dvostrukog));
/ * Saznajte veličinu niza * /
printf ("Veličina pametnih telefona [10] =% ld \ n", veličina (pametnih telefona));
printf ("Veličina imena pametnih telefona [10] =% ld \ n", veličina (imena pametnih telefona));
printf ("Veličina cijene SmartPhonesPrice [10] =% ld \ n", veličina (SmartPhonesPrice));
return 0;

Sizeof za korisnički definirane vrste (primjer3.c):

U ovom ćemo primjeru vidjeti kako koristiti operator sizeof za korisnički definirane tipove podataka kao što su struktura i unija. Upotrijebimo program i shvatimo rezultate.

Sada, gledajući program, možemo ručno izračunati veličinu SmartPhoneTypea. Kao što možete vidjeti u nastavku, SmartPhoneType je struktura i sadrži sljedeće elemente:

  • Broj varijable tipa znaka = 1 [ime_pomena]
  • Broj varijable cijelog broja = 1 [sp_version]
  • Broj varijabli tipa plutajuće = 3 [duljina_širine, širina_širine, visina_pne]

Iz primjera-1 vidjeli smo da:

    • Veličina znaka je 1 bajt
    • Veličina cijelog broja je 4 bajta
    • Veličina plovka je 4 bajta

Stoga, ako zbrojimo veličinu svih elemenata u strukturi, trebali bismo moći dobiti veličinu strukture, tj.e. SmartPhoneType. Stoga bi veličina strukture trebala biti = (1 + 4 + 4 + 4 + 4) bajtova = 17 bajtova. Međutim, izlaz programa kaže da je veličina strukture 20. Dodatna 3 bajta (ime_pomena, koje je znak, uzima 4 bajta umjesto 1 bajta) dodijeljena strukturi zbog umetanja strukture.

#include
/ * Stvorite korisnički definiranu vrstu strukture - SmartPhoneType * /
strukturirati SmartPhoneType

char sp_name;
int sp_verzija;
plutajuća sp_duljina;
plutajuća širina;
plutajuća sp_height;
SmartPhone;
/ * Definirajte korisnički definiranu vrstu unije - SmartPhoneUnionType * /
Union SmartPhoneUnionType

char sp_name;
int sp_verzija;
plutajuća sp_duljina;
plutajuća širina;
plutajuća sp_height;
SmartPhone_u;
int main ()

/ * Saznajte veličinu strukture i spoja * /
printf ("Veličina strukture =% ld \ n", veličina (SmartPhone));
printf ("Veličina unije =% ld \ n", veličina (SmartPhone_u));
return 0;

Veličina varijabli (primjer4.c):

Ovaj primjer programa ilustrira da je operator sizeof sposoban prihvatiti i varijablu i vratiti veličinu varijable.

#include
int main ()

/ * Deklarirajte varijablu i niz char, int, float i double type * /
char var_a, var_b [20];
int var_c, var_d [20];
plutaju var_e, var_f [20];
dvostruki var_g, var_h [20];
/ * Saznajte veličinu varijabli i niza.
Ovaj program pokazuje da i varijabla može
koristi se kao veličina operanda operatora * /
/ * veličina char, char varijabla i char niz * /
printf ("Veličina znaka =% ld \ n", veličina (char));
printf ("Veličina var_a =% ld \ n", veličina (var_a));
printf ("Veličina var_b [20] =% ld \ n \ n", veličina (var_b));
/ * veličina int, int varijable i int niza * /
printf ("Veličina int =% ld \ n", veličina (int));
printf ("Veličina var_c =% ld \ n", veličina (var_c));
printf ("Veličina var_d [20] =% ld \ n \ n", veličina (var_d));
/ * veličina float-a, float-varijable i float-polja * /
printf ("Veličina float-a =% ld \ n", sizeof (float));
printf ("Veličina var_e =% ld \ n", sizeof (var_e));
printf ("Veličina var_f [20] =% ld \ n \ n", veličina (var_f));
/ * veličina dvostruke, dvostruke varijable i dvostrukog niza * /
printf ("Veličina dvostrukog =% ld \ n", veličina (dvostrukog));
printf ("Veličina var_g =% ld \ n", veličina (var_g));
printf ("Veličina var_h [20] =% ld \ n", veličina (var_h));
return 0;

Veličina izraza (primjer5.c):

U ovom primjeru programa pokazat ćemo da operator sizeof također može prihvatiti izraz i vratiti veličinu rezultirajućeg izraza.

#include
int main ()

int var_a = 5, var_b = 3;
dvostruki var_c = 2.5, var_d = 4.5;
printf ("Veličina int =% ld \ n", veličina (int));
printf ("Veličina dupla =% ld \ n \ n", veličina (dvostruka));
printf ("Veličina var_a * var_b =% ld \ n", sizeof (var_a * var_b));
printf ("Veličina var_c * var_d =% ld \ n", sizeof (var_c * var_d));
/ * Ovdje množimo cjelobrojnu varijablu s dvostrukom varijablom.
Stoga će operator sizeof vratiti veličinu maksimalne veličine
varijabla i.e. varijabla dvostrukog tipa.* /
printf ("Veličina var_a * var_c =% ld \ n", sizeof (var_a * var_c));
return 0;

Praktična uporaba veličine (primjer6.c):

Ovaj primjer programa pomoći će vam da razumijete praktični slučaj upotrebe sizeof operatora. Operator Sizeof je vrlo koristan dok dodjeljuje dinamičku memoriju iz hrpe koristeći malloc. Pogledajmo program i rezultate.

#include
#include
typedef struct

char sp_name;
int sp_verzija;
plutajuća sp_duljina;
širina plutanja;
plutajuća sp_height;
SmartPhoneType;
int main ()

/ * Dodijelite memoriju u Heap memoriji za držanje pet SmartPhoneType
varijable.
* /
SmartPhoneType * SmartPhone_Ptr = (SmartPhoneType *) malloc (5 * veličina (SmartPhoneType));
ako (SmartPhone_Ptr != NULL)

printf ("Memorija dodijeljena za 5 varijabli strukture SmartPhoneType u sustavu Windows Vista
memorija hrpe.\ n ");

drugo

printf ("Došlo je do pogreške tijekom dodjele memorije hrpe!");

return 0;

Zaključak:

Sizeof je važan unarni operator u programskom jeziku C. Pomaže nam u određivanju veličine primitivnih vrsta podataka, korisnički definiranih tipova podataka, izraza itd. u memoriji računala. Operator Sizeof igra važnu ulogu u dodjeli dinamičke memorije u C pomoću malloc, calloc, itd. u hrpi memorije.

Kontrolirajte i upravljajte kretanjem miša između više monitora u sustavu Windows 10
Dvostruki zaslon upravitelja miša omogućuje vam kontrolu i konfiguriranje kretanja miša između više monitora, usporavajući njegovo kretanje blizu gran...
WinMouse vam omogućuje prilagodbu i poboljšanje kretanja pokazivača miša na Windows računalu
Ako želite poboljšati zadane funkcije pokazivača miša, upotrijebite besplatni program WinMouse. Dodaje više značajki koje će vam pomoći da na najbolji...
Lijevi gumb miša ne radi u sustavu Windows 10
Ako s prijenosnim računalom ili stolnim računalom koristite namjenski miš, ali lijevi gumb miša ne radi u sustavu Windows 10/8/7 iz nekog razloga evo ...