¿Por qué escribimos tamaño de (x) / tamaño de (x?[0]) en lugar de simplemente escribir sizeof(x) para determinar el tamaño de la matriz en C++

programación


¿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:

C
#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,

C
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++.

コメント

タイトルとURLをコピーしました