logo

operatoriaus dydis C

Dydis yra plačiai naudojamas operatorius C. Tai kompiliavimo laiko unarinis operatorius, kuris gali būti naudojamas apskaičiuoti jo operando dydis . Sizeof rezultatas yra beženklio integralo tipo, kuris paprastai žymimas dydis_t. sizeof gali būti taikomas bet kokiam duomenų tipui, įskaitant primityvius tipus, tokius kaip sveikųjų skaičių ir slankiojo kablelio tipus, rodyklės tipus arba sudėtinius duomenų tipus, tokius kaip struktūra, sąjunga ir kt.

Sintaksė:

 sizeof ( Expression );>

kur ' Išraiška “ gali būti duomenų tipas arba bet kokio tipo kintamasis.



Grąžinti: Jis grąžina nurodytos išraiškos dydžio dydį.

Laiko sudėtingumas: O(1)
Pagalbinė erdvė: O(1)

Operatoriaus sizeof() naudojimas

dydis() operatorius naudojamas įvairiais būdais, atsižvelgiant į operando tipą.

1. Kai operandas yra duomenų tipas: Kada dydis() naudojamas su duomenų tipais, tokiais kaip int, float, char… ir tt, jis tiesiog grąžina tiems duomenų tipams skirtą atminties kiekį.

sql sąlygos

Pavyzdys:

C




// C Program To demonstrate> // sizeof operator> #include> int> main()> {> >printf>(>'%lu '>,>sizeof>(>char>));> >printf>(>'%lu '>,>sizeof>(>int>));> >printf>(>'%lu '>,>sizeof>(>float>));> >printf>(>'%lu'>,>sizeof>(>double>));> >return> 0;> }>

>

>

Išvestis

1 4 4 8>

Pastaba: sizeof() gali suteikti skirtingą išvestį priklausomai nuo mašinos, mes paleidome savo programą 32 bitų gcc kompiliatoriuje.

2. Kai operandas yra išraiška: Kada dydis() naudojamas su išraiška, jis grąžina išraiškos dydį.

Pavyzdys:

C




// C Program To demonstrate> // operand as expression> #include> int> main()> {> >int> a = 0;> >double> d = 10.21;> >printf>(>'%lu'>,>sizeof>(a + d));> >return> 0;> }>

>

>

Išvestis

8>

Kaip žinome iš pirmojo atvejo int ir double dydis yra atitinkamai 4 ir 8, a yra int kintamasis, o d yra dvigubas kintamasis. Galutinis rezultatas bus dvigubas, todėl mūsų programos išvestis yra 8 baitai.

Operatoriaus tipas

sizeof() yra kompiliavimo laiko operatorius. Kompiliavimo laikas reiškia laiką, kai šaltinio kodas konvertuojamas į dvejetainį kodą. Jis nevykdo (paleidžia) kodo viduje ().

Pavyzdys:

C




sąrašo pavyzdys java

// C Program to illustrate> // that the 'sizeof' operator> // is a 'compile time operator'> #include> int> main(>void>)> {> >int> y;> >int> x = 11;> >// value of x doesn't change> >y =>sizeof>(x++);> >// prints 4 and 11> >printf>(>'%i %i'>, y, x);> >return> (0);> }>

>

>

Išvestis

4 11>

Jei bandysime padidinti x reikšmę, ji išlieka tokia pati. Taip yra todėl, kad x yra padidinamas skliausteliuose, o sizeof() yra kompiliavimo laiko operatorius.

Reikalingas dydis

1. Norėdami sužinoti elementų skaičių masyve: Sizeof gali būti naudojamas automatiškai apskaičiuoti masyvo elementų skaičių.

Pavyzdys:

C




// C Program> // demonstrate the method> // to find the number of elements> // in an array> #include> int> main()> {> >int> arr[] = { 1, 2, 3, 4, 7, 98, 0, 12, 35, 99, 14 };> >printf>(>'Number of elements:%lu '>,> >sizeof>(arr) />sizeof>(arr[0]));> >return> 0;> }>

>

>

Išvestis

linkedlist ir arraylist
Number of elements:11>

2. Norėdami dinamiškai paskirstyti atminties bloką: sizeof yra labai naudojamas dinaminiam atminties paskirstymui. Pavyzdžiui, jei norime paskirstyti atmintį, kurios pakaktų 10 sveikųjų skaičių, ir mes nežinome, kokio dydžio (int) konkrečiame kompiuteryje. Galime paskirstyti dydžio pagalba.

Sintaksė:

int* ptr = (int*)malloc(10 * sizeof(int));>

Norėdami gauti daugiau informacijos, skaitykite straipsnį - Dinamiškai paskirstykite atminties bloką .