rozmiar

W C i ++ C programowania języków The jednoargumentowy operator sizeof podaje rozmiar w bajtach od jej argumentu . Operand może być specyfikatorem typu lub wyrażeniem.

szczegółowy opis

W językach C i C ++ znak z definicji ma rozmiar 1 bajtu . Tak więc sizeof (char) wynosi zawsze 1. Jest to prawdą, nawet jeśli bajt ma więcej niż 8 bitów , co ma miejsce w przypadku nietypowych procesorów .

Operator sizeof można zastosować do wszystkich typów danych. W przypadku, gdy operand jest wyrażeniem, sizeof tworzy rozmiar typu wyniku wyrażenia. Wartość operacji sizeof jest typu size_t (typ liczby całkowitej bez znaku zdefiniowanego przez standardowy nagłówek <stddef.h> ).

Użyteczność

W wielu programach warto znać rozmiar typu danych. Chociaż w przypadku dowolnej implementacji C lub C ++ rozmiar określonego typu danych jest stały, rozmiary tych samych typów pierwotnych w C i C ++ są definiowane przez implementację. Jest to ważne podczas przydzielania bloku pamięci o odpowiednim rozmiarze.

int *pointeur; pointeur = (int *) malloc(10 * sizeof (int));

W tym przykładzie  malloc  przydziela pamięć i zwraca wskaźnik do bloku pamięci. Rozmiar przydzielonego bloku jest równy liczbie bajtów pojedynczego obiektu typu intpomnożonej przez 10, zapewniając wystarczającą ilość miejsca na 10 liczb całkowitych.

Generalnie nie możemy zakładać rozmiaru wszystkich typów danych. Na przykład, chociaż większość implementacji C i C ++ w systemach 32-bitowych przydziela 4 bajty dla typu  int , rozmiar ten może się zmienić, gdy kod jest przenoszony do innego systemu. Wyjątkiem jest typ char , który we wszystkich implementacjach C ma zawsze rozmiar 1. Ponadto często trudno jest przewidzieć rozmiar typów złożonych, takich jak struct  i union , ze względu na wypełnienie . Użycie sizeof umożliwia przenoszenie kodu.