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.
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
// 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:
int* ptr = (int*)malloc(10 * sizeof(int));
Więcej informacji znajdziesz w artykule – Przydzielaj blok pamięci dynamicznie .