En el programa del punto anterior, utilizamos funciones para resolver cada punto, a las que les pasábamos como parámetros la matriz y los vectores necesarios. Hay algunos puntos que deben tenerse en cuenta cuando se pasan vectores y matrices como parámetros a funciones:
Primero, los vectores y matrices SIEMPRE se pasan como PARÁMETROS POR REFERENCIA, aunque no se lo explicite con el operador &. Es decir, los cambios que realizo a dichos vectores en las funciones, se reflejarán luego en el programa principal. En el primer punto del programa, cargar una venta, dicha venta se sumaba a la posición correspondiente de la matriz. Si la matriz hubiera sido pasada por valor, al salir de la función se perdería el valor de la venta recién cargada.
Esto es así, entre otros motivos, por el gran tamaño que pueden alcanzar fácilmente los vectores y matrices. Tener que copiar toda esa información cada vez que se llama a la función, haría muy lento el programa.
Segundo, habrán observado que cuando le paso como parámetro un vector a una matriz no le indico entre corchetes la CANTIDAD DE ELEMENTOS que contiene. Esto es porque al C++ no le interesa la cantidad de elementos. Ve al vector como una "lista" de valores puestos uno atrás del otro, por eso hay que pasarle a la función otro parámetro indicando la cantidad de elementos a considerar (que puede ser el tamaño del vector o sólo la cantidad de elementos válidos en el mismo).
En el caso de las matrices pasa lo mismo, pero sólo con la primera dimensión. Si imaginamos a la matriz como un vector de sub-vectores, el C++ no necesita saber cuántos vectores hay en la matriz. Pero como toda la matriz se guarda en posiciones consecutivas de memoria, sí necesita saber el tamaño de cada sub-vector, para poder saber en qué dirección de memoria está cada sub-vector y cada elemento de la matriz. Por ello, es solamente la primera dimensión la que no es necesario indicar. En el caso de los vectores, es la única.
No hay comentarios:
Publicar un comentario