[ad_1]
¿Cómo calcula el operador sizeof() el tamaño de la matriz?
Lo que he probado:
Escribí sizeof(x) para calcular el tamaño de la matriz pero no obtuve el resultado esperado.
Solución 1
sizeof
devuelve el número de bytes utilizados por el parámetro: para una matriz, el tamaño de cada elemento multiplicado por el número de elementos.
Prueba esto:
#include <stdio.h> int main() { int arr[10]; printf("%lu:%lu\n", sizeof(arr), sizeof(arr[0])); return 0; }
Y obtendrá el resultado “40:4”: el total de la matriz usa 40 bytes de memoria y cada uno de los 10 elementos de la matriz usa 4 bytes.
Solución 2
Una pequeña adición: la expresión que escribiste,
sizeof( x ) / sizeof( x[0] )
Se utiliza para calcular el número de elementos en una matriz. Esto es lo mismo que lo que el _countof
macro lo hace en VisualStudio C++.
Para resumir las tres expresiones y su resultado para int x[8]
:
sizeof(x) size in bytes of x : 32 sizeof(x[0]) size in bytes of one item of x : 4 sizeof(x)/sizeof(x[0]) number of items in x : 8
Solución 3
Más bien debería preguntarse por qué utiliza una matriz C en lugar de un contenedor en C++. Puede utilizar el método size() en contenedores y obtener el tamaño deseado, que también puede ajustar en tiempo de ejecución. También existen muchas otras ventajas al utilizar las posibilidades de C++.
[ad_2]
コメント