logo

operator sizeof w C

Rozmiar jest często używanym operatorem w języku C. Jest to operator jednoargumentowy stosowany w czasie kompilacji, którego można użyć do obliczenia rozmiar jego operandu . Wynik sizeof jest typu całkowitego bez znaku, który jest zwykle oznaczany przez size_t. sizeof można zastosować do dowolnego typu danych, w tym typów pierwotnych, takich jak typy całkowite i zmiennoprzecinkowe, typy wskaźników lub złożone typy danych, takie jak Structure, Union itp.

Składnia:

 sizeof ( Expression );>

Gdzie ' Wyrażenie „może być typem danych lub zmienną dowolnego typu.



Powrót: Zwraca rozmiar size danego wyrażenia.

Złożoność czasowa: O(1)
Przestrzeń pomocnicza: O(1)

Użycie operatora sizeof().

rozmiar() Operator jest używany na różne sposoby, w zależności od typu operandu.

1. Gdy operand jest typem danych: Gdy rozmiar() jest używany z typami danych takimi jak int, float, char… itd. po prostu zwraca ilość pamięci przydzielonej dla tego typu danych.

posortuj tablicę Java

Przykład:

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

>

>

Wyjście

1 4 4 8>

Notatka: sizeof() może dawać różne wyniki w zależności od maszyny, uruchomiliśmy nasz program na 32-bitowym kompilatorze gcc.

2. Gdy operand jest wyrażeniem: Gdy rozmiar() jest używany z wyrażeniem, zwraca rozmiar wyrażenia.

Przykład:

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

>

>

Wyjście

8>

Jak wiemy z pierwszego przypadku, rozmiary int i double wynoszą odpowiednio 4 i 8, a jest zmienną int, a d jest zmienną double. Wynik końcowy będzie podwójny, stąd wynik naszego programu wynosi 8 bajtów.

Typ operatora

sizeof() jest operatorem czasu kompilacji. czas kompilacji odnosi się do czasu, w którym kod źródłowy jest konwertowany na kod binarny. Nie wykonuje (uruchamia) kodu znajdującego się wewnątrz ().

Przykład:

C




liczba całkowita podwójna 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);> }>

>

>

Wyjście

4 11>

Jeśli spróbujemy zwiększyć wartość x, pozostanie taka sama. Dzieje się tak, ponieważ wartość x jest zwiększana w nawiasach, a sizeof() jest operatorem działającym w czasie kompilacji.

Potrzeba rozmiaru

1. Aby sprawdzić liczbę elementów w tablicy: Sizeof może służyć do automatycznego obliczania liczby elementów tablicy.

Przykład:

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

>

>

Wyjście

Number of elements:11>

2. Aby dynamicznie przydzielić blok pamięci: sizeof jest szeroko stosowany w dynamicznej alokacji pamięci. Na przykład, jeśli chcemy przydzielić pamięć wystarczającą do przechowywania 10 liczb całkowitych i nie znamy rozmiaru sizeof(int) w tej konkretnej maszynie. Możemy alokować za pomocą sizeof.

Składnia:

diagram klas Java
int* ptr = (int*)malloc(10 * sizeof(int));>

Więcej informacji znajdziesz w artykule – Przydzielaj blok pamięci dynamicznie .