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 .