¿Por qué cuando se trabaja con matrices bidimensionales solo la segunda dimensión es importante para un compilador? No puedo entender esto. Gracias¿Por qué solo es importante la segunda dimensión de matriz?
Respuesta
Porque el compilador necesita averiguar cómo acceder a los datos de la memoria. La primera dimensión no es importante porque el compilador puede contar el número de elementos cuando se dan todos los demás tamaños.
Ejemplos:
int a1[] = { 1, 2, 3, 4 }
compilador sabe a asignar espacio para 4 enteros. Ahora, con esto:
int a2[][] = { 1, 2, 3, 4, 5, 6} }
compilador no puede decidir si debe ser a2 [1] [6] o a2 [2] [3] o a2 [3] [2] o a2 [6] [1] . Una vez que le digas la segunda dimensión, puede calcular la primera.
Por ejemplo, intentar acceder al elemento a2 [1] [0] arrojaría valores diferentes según la declaración. Podría obtener 2, 3, 4 o incluso una posición no válida.
Siéntese y descubra cómo encontrar la posición de memoria de a[i][j]
dada la posición de inicio de la matriz.
Tenga en cuenta que las matrices C son dispuestos como esta nota a[0][0]
a[0][1]
a[0][2]
... a[0][M]
a[1][0]
...
lateral: matrices FORTRAN se disponen de forma diferente: a[1][1]
a[2][1]
a[3][1]
... a[N][1]
a[1][2]
..
Observe cómo esto cambiaría cuya dimensión es necesaria para encontrar posiciones de memoria.
No es la "segunda dimensión" (excepto cuando solo tiene 2 dimensiones): es "casi la primera dimensión". Entonces puede tener int a[][2][3][4]
por ejemplo. Sin estas dimensiones, no sería posible calcular la dirección de un elemento.
- 1. ¿Por qué es importante JSON?
- 2. ¿Por qué la ubicación del caché es importante para el rendimiento de la matriz?
- 3. ¿Qué es WebIDL y (por qué) es importante?
- 4. ¿Por qué es importante la codificación segura de Java?
- 5. ¿Por qué es tan importante la protección pública privada?
- 6. ¿Por qué es importante el manejo de errores?
- 7. ¿Por qué mi matriz multidimensional de PowerShell se interpreta como una matriz de 1 dimensión?
- 8. ¿Qué es la asociatividad de los operadores y por qué es importante?
- 9. ¿Qué es esta segunda novedad?
- 10. NO es la tecnología más importante ... ¿pero qué es esto?
- 11. ¿por qué la alineación de la estructura de datos es importante para el rendimiento?
- 12. ¿Por qué es importante la Interfaz Binaria de Aplicación para la programación
- 13. La matriz de Jagged PowerShell está perdiendo una dimensión cuando solo existe un elemento
- 14. ¿Por qué Request.QueryString es solo de lectura?
- 15. Subconjunto matriz R: dimensión perdida cuando su longitud es 1
- 16. ¿Qué tan importante es deshacerse de una fuente realmente?
- 17. ¿Cuán importante es la portabilidad de SQL?
- 18. iteración matriz de una dimensión como matriz de dos dimensiones
- 19. Dimensión, solo cambiando el ancho/alto
- 20. Convierta una matriz en una matriz de 1 dimensión
- 21. ¿Por qué los problemas de segunda causa de salto?
- 22. ¿Por qué no hay ningún atributo css de dimensión?
- 23. MIPS - ¿Es importante?
- 24. Información de fusión de Subversion, ¿qué tan importante es?
- 25. obteniendo la dimensión de una matriz multidimensional en ruby
- 26. En Android, ¿qué significa la dimensión% p?
- 27. DOP fetchAll matriz a una sola dimensión
- 28. Significado de ancho de banda en CUDA y por qué es importante
- 29. ¿Por qué se invalida este importante valor de CSS?
- 30. ¿Por qué es importante aprender sobre la metaprogramación y las clases propias en Ruby?
¿Podría dar un ejemplo? ¿Cómo es que si tengo un compilador [3] [4] solo necesita un [] [4]? No puedo entender esto. De Verdad. –
Le da al compilador la información suficiente para saber cómo guardar cosas en la memoria. Si tienes 12 elementos y le dices un [] [], podrían ser dos números cualquiera (xey) que se multipliquen a 12. Si le das un [] [4], sabe que x y 4 se multiplican a 12 , entonces x debe ser 3. Si ayuda a que sea lógico, configure una ecuación básica con cada dimensión a la izquierda y la cantidad total de elementos a la derecha. Es difícil o imposible de resolver por más de 1 variable. – ssube
@peachykeen: esto es algo engañoso. Las dimensiones son necesarias para calcular la dirección de un elemento de matriz. Sin embargo, la primera dimensión no es necesaria, ya que no es necesaria para el cálculo de la dirección (el límite superior es irrelevante). –