Función que recibe un array, lo modifica y lo devuelve

Hola,

A ver si me podéis echar una mano con el código:

Estaba intentando hacer una función que reciba un array de enteros, lo modifique con los datos leídos y lo devuelva para que desde el void() pueda seguir haciendo cosas con él, pero me salen mil errores. (mi idea es programarlo mediante punteros, o sea mediante paso por referencia).

int * funcionLeer(int array[3]){

   array[0] = digitalRead(pin1):
   array[1] = digitalRead(pin2):
   array[2] = digitalRead(pin3):

   return array;
}

int lecturaSensores[3]={0,0,0};

void loop(){

   lecturaSensores= funcionLeer(lecturaSensores);

}

Lee las Normas del foro.

void funcionLeer(int array[]){
   array[0] = digitalRead(pin1):
   array[1] = digitalRead(pin2):
   array[2] = digitalRead(pin3):
}

int lecturaSensores[3]={0,0,0};

void loop() {
   funcionLeer(lecturaSensores);
}

No hace falta que la función retorne nada. Una variable de tipo array es un puntero al primer elemento del array. Como es un puntero, accede diréctamente a los valores “apuntados” y se modifican desde dentro de la función.

No es necesario indicar el tamaño en el prámetro [color=maroon]array[][/color] de la función. Porque no se ha de reservar memoria para alojar el array ya que no lo va a copiar. Solo se pasa la referencia al array original.

Ahora eso se hace con un simple byte y sobran 5 bits mas allá de la capacidad del puntero el almacenamiento del estado de 3 bits no requiere 3 enteros.

Muchas gracias a todos.

Cierto surbite, en realidad son 10 sensores. Necesito 2 Bytes para optimizarlo.

Lo probaré ahora