logo

operatora lielums C

Izmērs ir plaši izmantots operators C. Tas ir kompilēšanas laika unārs operators, ko var izmantot, lai aprēķinātu tā operanda lielums . Izmēra sizeof rezultāts ir neparakstīta integrāļa tipa, ko parasti apzīmē ar lielumu_t. sizeof var lietot jebkuram datu tipam, tostarp primitīviem veidiem, piemēram, veselu skaitļu un peldošā komata tipiem, rādītāju tipiem vai saliktiem datu tipiem, piemēram, struktūra, savienība utt.

Sintakse:

 sizeof ( Expression );>

kur' Izteiksme 'var būt datu tips vai jebkura veida mainīgais.



Atgriezties: Tas atgriež dotās izteiksmes lieluma lielumu.

Laika sarežģītība: O(1)
Palīgtelpa: O(1)

Operatora sizeof() izmantošana

izmērs() operators tiek izmantots dažādos veidos atkarībā no operanda veida.

1. Ja operands ir datu tips: Kad izmērs() tiek izmantots ar tādiem datu tipiem kā int, float, char… utt., tas vienkārši atgriež šiem datu tipiem piešķirtās atmiņas apjomu.

java concat virkne

Piemērs:

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;> }>

>

>

Izvade

1 4 4 8>

Piezīme: sizeof() var dot atšķirīgu izvadi atkarībā no mašīnas, mēs esam palaiduši savu programmu 32 bitu gcc kompilatorā.

2. Ja operands ir izteiksme: Kad izmērs() tiek izmantots ar izteiksmi, tas atgriež izteiksmes lielumu.

Piemērs:

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;> }>

>

>

Izvade

8>

Kā mēs zinām no pirmā gadījuma, int un double lielums ir attiecīgi 4 un 8, a ir int mainīgais, bet d ir dubultais mainīgais. Gala rezultāts būs dubults, tāpēc mūsu programmas izvade ir 8 baiti.

Operatora veids

sizeof() ir kompilēšanas laika operators. kompilēšanas laiks attiecas uz laiku, kurā avota kods tiek pārveidots par bināro kodu. Tas neizpilda (palaiž) kodu () iekšpusē.

Piemērs:

C




kā java savienot virknes

// 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);> }>

>

>

Izvade

4 11>

Ja mēs mēģinām palielināt x vērtību, tā paliek nemainīga. Tas ir tāpēc, ka x tiek palielināts iekavās un sizeof() ir kompilēšanas laika operators.

Nepieciešamība pēc izmēra

1. Lai uzzinātu elementu skaitu masīvā: Sizeof var izmantot, lai automātiski aprēķinātu masīva elementu skaitu.

Piemērs:

C


konvertēt Būla vērtību virknē



// 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;> }>

>

>

Izvade

Number of elements:11>

2. Lai dinamiski piešķirtu atmiņas bloku: sizeof tiek plaši izmantots dinamiskajā atmiņas piešķiršanā. Piemēram, ja mēs vēlamies piešķirt atmiņu, kas ir pietiekama, lai saglabātu 10 veselus skaitļus, un mēs nezinām (int) lielumu šajā konkrētajā mašīnā. Varam piešķirt ar sizeof palīdzību.

Sintakse:

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

Plašāku informāciju skatiet rakstā - Dinamiski piešķiriet atmiņas bloku .