sizeof
, operator
Zwraca rozmiar operandu w odniesieniu do rozmiaru typu char
.
Uwaga
Aby uzyskać informacje na temat sizeof ...
operatora, zobacz Wielokropek i szablony wariadyczne.
Składnia
sizeof unary-expression
sizeof ( type-name )
Uwagi
Wynikiem sizeof
operatora jest typ size_t
, typ całkowity zdefiniowany w pliku <include stddef.h>. Ten operator pozwala uniknąć określania rozmiarów danych zależnych od maszyny w programach.
Operand sizeof
może być jednym z następujących elementów:
Nazwa typu. Aby użyć
sizeof
nazwy typu, nazwa musi być ujęta w nawiasy.Wyrażenie. W przypadku użycia z wyrażeniem
sizeof
można określić nawiasy lub bez nawiasów. Wyrażenie nie jest oceniane.
sizeof
Gdy operator jest stosowany do obiektu typu char
, zwraca wartość 1. sizeof
Gdy operator jest stosowany do tablicy, zwraca całkowitą liczbę bajtów w tej tablicy, a nie rozmiar wskaźnika reprezentowanego przez identyfikator tablicy. Aby uzyskać rozmiar wskaźnika reprezentowanego przez identyfikator tablicy, przekaż go jako parametr do funkcji, która używa sizeof
elementu . Na przykład:
Przykład
#include <iostream>
using namespace std;
size_t getPtrSize( char *ptr )
{
return sizeof( ptr );
}
int main()
{
char szHello[] = "Hello, world!";
cout << "The size of a char is: "
<< sizeof( char )
<< "\nThe length of " << szHello << " is: "
<< sizeof szHello
<< "\nThe size of the pointer is "
<< getPtrSize( szHello ) << endl;
}
Przykładowe dane wyjściowe
The size of a char is: 1
The length of Hello, world! is: 14
The size of the pointer is 4
sizeof
Gdy operator jest stosowany do class
typu , struct
lub union
, wynik jest liczbą bajtów w obiekcie tego typu, a także wszelkie dopełnienie dodane w celu wyrównania elementów członkowskich na granicach wyrazów. Wynik nie musi odpowiadać rozmiarowi obliczonym przez dodanie wymagań magazynu poszczególnych elementów członkowskich. Opcja /Zp kompilatora i pragma pakietu wpływają na granice wyrównania dla elementów członkowskich.
Operator sizeof
nigdy nie zwraca wartości 0, nawet dla pustej klasy.
Nie sizeof
można używać operatora z następującymi operandami:
Funkcje. (Można jednak
sizeof
zastosować wskaźniki do funkcji).Pola bitowe.
Niezdefiniowane klasy.
Typ
void
.Dynamicznie przydzielane tablice.
Tablice zewnętrzne.
Niekompletne typy.
Nawiasy nazw niekompletnych typów.
Po zastosowaniu sizeof
operatora do odwołania wynik jest taki sam, jak w przypadku sizeof
zastosowania do samego obiektu.
Jeśli tablica bez określonego rozmiaru jest ostatnim elementem struktury, operator sizeof
zwróci rozmiar struktury bez tablicy.
Operator sizeof
jest często używany do obliczania liczby elementów w tablicy przy użyciu wyrażenia formularza:
sizeof array / sizeof array[0]
Zobacz też
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla