Udostępnij za pośrednictwem


sizeof — operator (C)

Operator sizeof podaje ilość pamięci w bajtach, wymaganą do przechowywania obiektu typu operand. Ten operator pozwala uniknąć określania rozmiarów danych zależnych od maszyny w programach.

Składnia

sizeof unary-expression
sizeof ( type-name )

Uwagi

Operand jest identyfikatorem jednoargumentowym lub wyrażeniem rzutowania typu (czyli specyfikatorem typu ujętym w nawiasy). Wyrażenie jednoargumentowe nie może reprezentować obiektu pola bitowego, niekompletnego typu lub projektowania funkcji. Wynik jest nieoznaczoną stałą całkowitą. Standardowy nagłówek STDDEF. H definiuje ten typ jako size_t.

Po zastosowaniu operatora sizeof do identyfikatora tablicy, wynik jest rozmiarem całej tablicy, a nie rozmiarem wskaźnika reprezentowanego przez identyfikator tablicy.

Po zastosowaniu operatora sizeof do nazwy typu struktury lub unii lub identyfikatora typu struktury lub unii, wynik jest liczbą bajtów w strukturze lub unii, w tym wypełnieniem wewnętrznym i końcowym. Ten rozmiar może obejmować wypełnienie wewnętrzne i końcowe używane do dostosowywania elementów członkowskich struktury lub unii w granicach pamięci. Jednakże, wynik może nie odpowiadać wielkości obliczonej przez dodanie pamięci wymaganej przez poszczególne elementy członkowskie.

Jeśli tablica bez określonego rozmiaru jest ostatnim elementem struktury, operator sizeof zwróci rozmiar struktury bez tablicy.

buffer = calloc(100, sizeof (int) );

W poniższym przykładzie użyto operatora sizeof do przekazania rozmiaru int, który waha się między maszynami, jako argumentu funkcji czasu wykonywania o nazwie calloc. Wartość zwracana przez funkcję jest przechowywana w buffer.

static char *strings[] = {
      "this is string one",
      "this is string two",
      "this is string three",
   };
const int string_no = ( sizeof strings ) / ( sizeof strings[0] );

W tym przykładzie strings jest tablicą wskaźników do char. Liczbą wskaźników jest liczba elementów w tablicy, ale nie jest ona określona. Łatwo jest określić liczbę wskaźników za pomocą operatora sizeof, aby obliczyć liczbę elementów w tablicy. Wartość string_no całkowita const jest inicjowana dla tej liczby. Ponieważ jest const to wartość, string_no nie można jej modyfikować.

Zobacz też

Operatory języka C
Wbudowane operatory, pierwszeństwo i kojarzenie języka C++