EL operador sizeof es un operador en tiempo de compilación que devuelve el tamaño de su argumento.
El tamaño es un múltiplo del tamaño de un char, el cual está definido para tener un tamaño de 1 byte (8-bits) en muchos computadores personales. La cantidad de bits en un char está almacenada como CHAR_BIT y definida en <climits>.
Éste es un ejemplo que usa sizeof para mostrar los tamaños de algunas variables:
struct EmployeeRecord { int ID; int age; double salary; EmployeeRecord* boss; }; ... cout << "sizeof(int): " << sizeof(int) << endl << "sizeof(float): " << sizeof(float) << endl << "sizeof(double): " << sizeof(double) << endl << "sizeof(char): " << sizeof(char) << endl << "sizeof(EmployeeRecord): " << sizeof(EmployeeRecord) << endl; int i; float f; double d; char c; EmployeeRecord er; cout << "sizeof(i): " << sizeof(i) << endl << "sizeof(f): " << sizeof(f) << endl << "sizeof(d): " << sizeof(d) << endl << "sizeof(c): " << sizeof(c) << endl << "sizeof(er): " << sizeof(er) << endl;
En algunas máquinas, la salida mostrada será la siguiente:
sizeof(int): 4 sizeof(float): 4 sizeof(double): 8 sizeof(char): 1 sizeof(EmployeeRecord): 20 sizeof(i): 4 sizeof(f): 4 sizeof(d): 8 sizeof(c): 1 sizeof(er): 20
sizeof puede tomar como argumento el nombre de un tipo (como int) o el nombre de una variable (como i en el caso superior). Los tamaños reportados de estos tipos de datos cambian dependiendo del sistema que está compilando -- un listado de los tipos y tamaños comunes está en ..data_types.
Los paréntesis son necesarios si se usa sizeof con un argumento que es un tipo (ej.: sizeof(int)) y pueden ser ignorados si el argumento es una variable (ej.: sizeof x, sizeof myArray).
Relacionado: ..data_types