logo

operador sizeof en C

Tamaño de es un operador muy utilizado en C. Es un operador unario en tiempo de compilación que se puede utilizar para calcular el tamaño de su operando . El resultado de sizeof es del tipo integral sin signo que normalmente se denota por size_t. sizeof se puede aplicar a cualquier tipo de datos, incluidos tipos primitivos como tipos enteros y de punto flotante, tipos de puntero o tipos de datos compuestos como estructura, unión, etc.

Sintaxis:

 sizeof ( Expression );>

dónde ' Expresión 'puede ser un tipo de datos o una variable de cualquier tipo.



Devolver: Devuelve el tamaño de la expresión dada.

Complejidad del tiempo: O(1)
Espacio Auxiliar: O(1)

Uso del operador sizeof()

tamaño de() El operador se utiliza de diferentes maneras según el tipo de operando.

1. Cuando el operando es un tipo de datos: Cuando tamaño de() se usa con tipos de datos como int, float, char… etc. simplemente devuelve la cantidad de memoria asignada a esos tipos de datos.

conjuntos en java

Ejemplo:

C




// C Program To demonstrate> // sizeof operator> #include> int> main()> {> >printf>(>'%lu '>,>sizeof>(>char>));> >printf>(>'%lu '>,>sizeof>(>int>));> >printf>(>'%lu '>,>sizeof>(>float>));> >printf>(>'%lu'>,>sizeof>(>double>));> >return> 0;> }>

>

>

Producción

1 4 4 8>

Nota: sizeof() puede dar resultados diferentes según la máquina, hemos ejecutado nuestro programa en un compilador gcc de 32 bits.

2. Cuando el operando es una expresión: Cuando tamaño de() se usa con la expresión, devuelve el tamaño de la expresión.

Ejemplo:

C




// C Program To demonstrate> // operand as expression> #include> int> main()> {> >int> a = 0;> >double> d = 10.21;> >printf>(>'%lu'>,>sizeof>(a + d));> >return> 0;> }>

>

>

Producción

8>

Como sabemos por el primer caso, el tamaño de int y double es 4 y 8 respectivamente, a es una variable int mientras que d es una variable double. El resultado final será el doble, por lo que la salida de nuestro programa es de 8 bytes.

Tipo de operador

sizeof() es un operador en tiempo de compilación. El tiempo de compilación se refiere al momento en que el código fuente se convierte en código binario. No ejecuta (ejecuta) el código dentro de ().

Ejemplo:

C




tabla java

// C Program to illustrate> // that the 'sizeof' operator> // is a 'compile time operator'> #include> int> main(>void>)> {> >int> y;> >int> x = 11;> >// value of x doesn't change> >y =>sizeof>(x++);> >// prints 4 and 11> >printf>(>'%i %i'>, y, x);> >return> (0);> }>

>

>

Producción

4 11>

Si intentamos incrementar el valor de x, sigue siendo el mismo. Esto se debe a que x se incrementa dentro del paréntesis y sizeof() es un operador en tiempo de compilación.

Necesidad de tamaño

1. Para saber la cantidad de elementos en una matriz: Sizeof se puede utilizar para calcular automáticamente el número de elementos de la matriz.

Ejemplo:

C

obtener la fecha actual en java




// C Program> // demonstrate the method> // to find the number of elements> // in an array> #include> int> main()> {> >int> arr[] = { 1, 2, 3, 4, 7, 98, 0, 12, 35, 99, 14 };> >printf>(>'Number of elements:%lu '>,> >sizeof>(arr) />sizeof>(arr[0]));> >return> 0;> }>

>

>

Producción

Number of elements:11>

2. Para asignar un bloque de memoria dinámicamente: sizeof se usa mucho en la asignación de memoria dinámica. Por ejemplo, si queremos asignar memoria suficiente para contener 10 números enteros y no conocemos el tamaño de (int) en esa máquina en particular. Podemos asignar con la ayuda de sizeof.

Sintaxis:

int* ptr = (int*)malloc(10 * sizeof(int));>

Para obtener más información, consulte el artículo: Asignar un bloque de memoria dinámicamente .