operador sizeof

Hace que el tamaño del operando con respecto al tamaño de charescrito.

sizeof unary-expression
sizeof ( type-name )

Comentarios

El resultado del operador de sizeof es de size_tescrito, un tipo definido entero en el archivo STDDEF.H. de inclusión.Este operador permite evitar especificar tamaños de datos equipo-dependientes en programas.

El operando de sizeof puede ser:

  • un nombre de tipo.para utilizar sizeof con un nombre de tipo, el nombre se debe agregar entre paréntesis.

  • Expresión.Cuando se utiliza con una expresión, sizeof se puede especificar con o sin paréntesis.la expresión no se evalúa.

Cuando se aplica el operador de sizeof a un objeto de charescrito, produce 1.Cuando se aplica el operador de sizeof a una matriz, produce el número total de bytes de que matriz, no el tamaño de puntero representado por el identificador de matriz.Para obtener el tamaño de puntero representado por el identificador de matriz, páselo como parámetro a una función que utilice sizeof.Por ejemplo:

Ejemplo

// expre_sizeof_Operator.cpp
// compile with: /EHsc
#include <iostream>

size_t getPtrSize( char *ptr )
{
   return sizeof( ptr );
}

using namespace std;
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;
}

Resultados del ejemplo

The size of a char is: 1
The length of Hello, world! is: 14
The size of the pointer is 4

Cuando se aplica el operador de sizeof a clase, a struct, o el tipo de union , el resultado es el número de bytes de un objeto de ese tipo, más cualquier relleno agregado para alinear los miembros en límites de palabras.El resultado no corresponde necesariamente el tamaño calcula sumando los requisitos de almacenamiento de los miembros individuales.La opción del compilador /Zp y el pragma de paquete afectan a los límites de alineación para los miembros.

El operador de sizeof nunca hace 0, incluso para una clase vacía.

El operador de sizeof no se puede utilizar con los operandos siguientes:

  • funciones.(Sin embargo, sizeof se puede aplicar a punteros a funciones).

  • campos de bits.

  • Clases sin definir.

  • el tipo void.

  • Matrices asignadas dinámicamente.

  • matrices externas.

  • tipos incompletos.

  • nombres entre paréntesis de tipos incompletos.

Cuando se aplica el operador de sizeof a una referencia, el resultado es el mismo que si sizeof se hubiera aplicado al propio objeto.

Si una matriz sin tamaño es el último elemento de una estructura, el operador de sizeof devuelve el tamaño de la estructura sin la matriz.

El operador de sizeof se utiliza normalmente para calcular el número de elementos de una matriz mediante una expresión del formulario:

sizeof array / sizeof array[0]

Vea también

Referencia

Expresiones con los operadores unarios

Palabras clave de C++