Hola Odukec, el tema de punteros siempre suele ser un poco lioso, y siempre nos da o nos ha dado problemas a todos alguna vez. Como bien dices, un puntero es una variable que "apunta" a otra
variable.
Por definicion, un puntero es una
variable que contiene la ireccion en memoria de otra variable.
En el caso que planteas, vemos que en el prototipo de la funcion, se pasa como parametro int* data (entre otros), esto quiere decir que lo que se va a pasar es el puntero que apunta cierta variable, es decir, no vas a pasar la variable (llamemosla X), sino la direccion donde esta situada esa variable en la memoria (direccion de memoria de la variable X).
Para pasar u obtener la direccion de una variable, sabes que tienes que usar el operador ampersand (creo que se escribe así) , su simbolo es: &
Entonces cuando hagas la llamada a la función, sabes que como primer parámetro tienes que pasarle un entero, como segundo parametro, otro entero y como tercer parametro, el puntero o lo que es lo mismo la direccion de memoria de esa variable, por ejemplo:
Tienes tres variables:
int variable 1;
int variable 2;
int variable 3;
Pues cuando llames a la funcion, seria algo asi:
int1 rs485_send_message(variable1, variable2, &variable3) //pasamos la direccion de memoria de variable3
Con ese simbolo (&) operador direccion consigues pasar la direccion de la variable a la que apunta ese puntero. En general, ese operador sirve para hallar la direccion de memoria de cualquier variable Puedes hacer la prueba con cualquier variable y un lcd.
El porque de pasar la direccion de memoria a la funcion en lugar de la propia variable como en los dos primero parametros, es debido a que las funciones pasan "copias" de las variables, es
decir, si en tu variable3 tienes almacenado el valor 27 y dentro de la funcion quieres cambiar el valor de variable3 a 30 (por ejemplo) no puedes hacerlo, porque has pasado a la funcion una copia del numero 27 y la variable no se modifica, sin embargo, si pasas la direccion de la memoria de la variable, si puedes acceder directamente a esa variable y modificarla dentro de la función.
Espero haberte sido de ayuda, aunque sé, que lo mio no es explicarme.
Esto ya es de por sí un tema lioso y encima contandotelo yo, lo puede ser aún más jejej.
Te recomiendo que si puedes, visites estos enlaces, seguramente esté mejor explicado de lo que lo yo he escrito:
Como teoria el Tema 7 del siguiente enlace, está bastante bien explicado y concretamente el
epígrafe 7.4 te puede interesar mucho:
http://labsopa.dis.ulpgc.es/cpp/intro_c/introcfc.htmPara saber el porqué de pasar la direccion de una variable a una funcion, leete este página y los post de Modulay, pienso que lo deja bastante claro y encima con un ejemplo que puede resultar
clarificador:
http://miarroba.com/foros/ver.php?foroid=46840&temaid=2307248&pag=3Un saludo.