¿Por qué preferimos sizeof (elemento) sobre sizeof (TYPE) para calcular el número de elementos en una matriz?

15

Estoy leyendo "Programación C de King K.N" y encontré la siguiente declaración:

  

Discutimos el uso de la expresión sizeof(a)/sizeof(a[0]) para calcular el número de elementos en una matriz. La expresión sizeof(a)/sizeof(t) , donde t es el tipo de elementos de a, también funcionaría, pero se considera una técnica inferior.

¿Por qué se considera una técnica inferior?

    
pregunta Higgs 06.07.2015 - 23:42
fuente

1 respuesta

25

sizeof(a)/sizeof(t) codifica explícitamente el tipo en la expresión. Ahora tiene el tipo especificado en varias ubicaciones, sin compatibilidad con el compilador para garantizar que está usando el mismo tipo. Entonces, si cambia el tipo base de la matriz, pero no en la expresión de conteo (completamente separada), bingo: su código se compilará bien, pero el conteo de elementos será incorrecto. Si tienes suerte, tu programa se bloqueará, pero si no, funcionará casi completamente correctamente, pero de vez en cuando se comportará de forma totalmente extraña.

Se garantiza que

sizeof(a)/sizeof(a[0]) es correcto, solo se requiere el nombre de la matriz. Cambia el tipo y estás bien; cambia el nombre de la matriz y el compilador se quejará. No es necesario pensar: nos gusta ese tipo de programación.

    
respondido por el Daniel Griscom 07.07.2015 - 02:38
fuente

Lea otras preguntas en las etiquetas