Tamaño de C ++

Tamaño de C ++
El sizeof () es un operador en c++. Es un operador unario que ayuda a los programadores a determinar el tamaño de los operandos que están utilizando. Un tipo integral, típicamente denotado por el tamaño "t", es el resultado de este operador. Este operador se usa típicamente con tipos de datos primitivos como entero, flotador, puntero, etc. Además, puede proporcionar el tamaño de un tipo de datos más sofisticados como uniones y estructuras. Es un operador que puede calcular el tamaño del operando y determinar el tamaño de cualquier tipo de datos en el momento de la compilación. El tamaño es la cantidad de RAM utilizada por la computadora y está determinada por la operación sizeOf ().

Sintaxis del operador sizeOf () en c++

Lo siguiente describe la sintaxis del operador sizeOf ():

# sizeof (nombre de data_type);

Cuando se usa con el primer tipo de objeto, la función sizeof () genera el tamaño del objeto en bytes para el tipo de objeto que se está enviando. El tamaño del elemento que se encuentra en el tipo de expresión, medido en bytes, es el segundo tipo. Después de evaluar la expresión, el tamaño sigue siendo el mismo.

Ejemplo 1:

Cuando los tipos de datos como int, float, char, etc. se usan con el operador sizeof (), la función simplemente proporciona la cantidad de RAM que se asigna a ese tipo de datos particular.

#incluir
usando el espacio de nombres STD;
int main ()

std :: cout << "Size of data type int : " <std :: cout << "Size of data type float : " <std :: cout << "Size of data type double: " <std :: cout << "Size of data type char: " <regresar 0;

Al utilizar el operador sizeof () con el comando cout, evaluamos el tamaño de los tipos de datos incorporados en la aplicación mencionada anteriormente. Como podemos ver en la siguiente salida, la operación sizeOf () produce la misma respuesta que esperaríamos dada nuestro conocimiento de los tamaños de bytes de int, float, doble y char.

Ejemplo 2:

El programa, cuando un tipo de clase es operando, usa el operador sizeOf (). Aquí hay una ilustración:

#incluir
usando el espacio de nombres STD;
clase mybase_class

int x;
;
int main ()

Mybase_class y;
std :: cout << "Size of Base class is : "<regresar 0;

Con solo una variable entera "x" en la clase "mybase_class" y el método principal de script mencionado anteriormente, evaluamos el tamaño de la clase. Primero, llamamos a la clase dada y creamos su objeto como "y". Luego, tenemos un operador sizeOf () que toma "y" como entrada. Las variables enteras ocupan 4 bytes, por lo que el resultado sería 4 bytes como se imprime en lo siguiente:

Ejemplo 3:

Si aumentamos el número de variables enteras en una clase, se produce el siguiente código:

#incluir
usando el espacio de nombres STD;
clase myclass_base

int i;
int j;
;
int main ()

Myclass_base j;
std :: cout << "Size of MyClass_Base is : "<regresar 0;

Ahora hay una segunda variable entera "j" en el código anterior. Dado que la variable int toma 4 bytes y hay dos variables enteras como "i" y "j", la clase "myclass_base" en este escenario es de 8 bytes de tamaño.

Ejemplo 4:

El código puede parecerse a lo siguiente si incluimos una variable Char:

#incluir
usando el espacio de nombres STD;
Clase MyClass

int p;
int q;
Char Ch;
;
int main ()

MyClass Q;
std :: cout << "Size of MyClass is : "<regresar 0;

Se utilizan dos variables enteros y una char en el código anterior de la clase "myclass". El tamaño de la clase debe ser de 9 bytes, ya que hay tres tipos de datos (int+int+char) de acuerdo con nuestros cálculos. Pero esto es incorrecto debido a la idea de la estructura del relleno. Puede ver el siguiente valor de resultado:

Ejemplo 5:

El caso donde el operando es una matriz. Echemos un vistazo a la implementación del programa:

#incluir
usando el espacio de nombres STD;
int main ()

int arr_set [] = 5,15,25,35,45;
std :: cout << "Size of the 'arr_set' is : "<regresar 0;

Establecimos una matriz de tipo entero como "arr_set" con cinco elementos en el programa anterior. Determinamos el tamaño de la matriz usando el operador sizeof (). La matriz tiene un tamaño de 20 bytes, ya que el tipo de datos int toma 4 bytes y hay 5 entradas en la matriz, lo que hace una necesidad total de espacio de memoria de 5 * 4 = 20 bytes. Como podemos ver en la siguiente salida, la operación sizeof () produjo el mismo resultado.

Ejemplo 6:

El ejemplo ya toma el tamaño de la matriz. Consideremos una matriz desde una perspectiva particular.

#incluir
usando el espacio de nombres STD;
void new_function (int Array [])

std :: cout << "Size of array is : " <
int main ()

int array [] = 51,52,53,54,55;
new_function (matriz);
regresar 0;

Intentamos utilizar la función "new_function" en la aplicación mencionada anteriormente para imprimir el tamaño de la matriz. Formamos una matriz de tipo entero en este caso, y enviamos el parámetro "matriz" al nuevo_function (). El tamaño del puntero entero o int* es devuelto por el nuevo_function (). En los sistemas operativos de 64 bits, el tamaño del int* es 8 bytes. La salida genera el tamaño de la matriz de la siguiente manera:

Ejemplo 7:

Ahora, este es el ejemplo donde el argumento es del tipo de puntero dentro del operador sizeOf ().

#incluir
usando el espacio de nombres STD;
int main ()

int *ptr1 = new int (31);
std :: cout << "ptr1 size:" <std :: cout << "*ptr1 size :" <doble *ptr2 = nuevo doble (20.99);
std :: cout <<"ptr2 size :" <std :: cout <<" *ptr2 size :"<char *ptr3 = nuevo char ('m');
std :: cout <<"ptr3 size :" <std :: cout <<"*ptr3 size :"<regresar 0;

Calculamos el tamaño de los punteros en el guión mencionado en el anteriormente. Para los tipos de datos "int", "double" y "char", los tamaños de puntero permanecen constantes. El tamaño del puntero es de 4 bytes si la computadora tenía un sistema operativo de 32 bits. El tamaño del puntero es de 8 bytes si la computadora ejecuta un sistema operativo de 64 bits. El resultado es 8 bytes a medida que ejecutamos este script en una plataforma de 64 bits. Ahora, si le damos al puntero el símbolo "*," la salida cambia dependiendo del tipo de datos. Por ejemplo, si *ptr1 es un tipo entero, el operador sizeof () da 4 bytes porque un tipo de datos int toma 4 bytes. El siguiente es el tamaño resultante de punteros correspondientes a cada tipo de datos especificados:

Ejemplo 8:

El ejemplo en el que tenemos una expresión como un operador sizeOf () operador.

#incluir
usando el espacio de nombres STD;
int main ()

int Integer_1;
doble entero_2;
cout << "size of int and double: " <regresar 0;

Tenemos dos variables, Integer_1 e Integer_2, de los tipos int y dobles, respectivamente. Se declaran en el programa. Como sabemos, los enteros tienen 4 bytes de tamaño, mientras que los dobles son 8 bytes. Los agregamos ambos en el operador sizeOf (). La variable, doble con un tamaño de 8 bytes, es el resultado.

Conclusión

Una explicación sizeof () para C ++ termina aquí. Hemos repasado los detalles sobre cómo funciona el operador C ++ sizeOf (), junto con ejemplos relevantes. Cualquier tipo de datos, expresión, matriz, etc. puede determinar su tamaño utilizando el operador sizeof (). El tipo de datos o una expresión debe proporcionarse como parte del argumento. Y la función devuelve el tamaño de ese tipo de datos en bytes como resultado.