8.7) Punteros y vectores.
     

    Las razones por las que el paso de parámetros de vectores a funciones siempre se realiza por referencia son:
     
     
     
    Un vector contiene una gran cantidad de datos. Sería muy ineficiente si cada vez que se pasa un vector como argumento a una función ésta realizase una copia en memoria del contenido de todos los elementos del vector.
     
    Un vector se transfiere a una función para que ésta realice unas modificaciones en todos o en algunos de los elementos de dicho vector y deseando que dichos cambios se registren en el vector durante el resto de la ejecución del programa.

     

     Por estas razones, el lenguaje C asume que un vector siempre se pasa por referencia. Para conseguir este efecto, C concede un significado especial a los vectores identificando el nombre de un vector con una dirección de memoria. De este modo , cada vez que se pasa un vector como argumento a una función, se está transfiriendo en realidad una dirección de memoria que representa  la localización del primer elemento del vector.
     
     

      Operaciones sobre vectores:
     

     Sabiendo que el nombre de un vector es una dirección de memoria, se puede aplicar los operadores de dirección e indirección vistos en el apartado 2.1. Además, el acceso habitual a un elemento del vector, expresado entre corchetes  ([ ]) el índice del elemento correspondiente, es asimismo una combinación de los operadores & y *.
     
     
     

     
    Operador &: 
    Dirección del primer elemento del vector
    &datos[0]
    datos
    (datos+0)
     Dirección del segundo elemento del vector
    &datos[1]
     
    (datos+1)
    Operador *:
    Valor del primer elemento del vector
    *datos
    datos[0]
    Valor del segundo elemento del vector
    &datos[0]
    datos[1]
     
     

    Ejemplo:  Veamos algunos ejemplos de como se reserva la memoria en estos casos: