hola pantagonico, pues mira, no se si has visto cómo se pasan los parámetros a las funciones, por si no te explico:
Existen dos formas de pasar parámetros a una función, por valor y por referencia:
-Parametros por valor: Son todos aquellos parámetros que entran a la función llamada y se hace una copia de estos para poderlos manipular dentro de la función llamada; al regresar el control a la función llamadora tales parámetros no sufrieron ningún cambio fuera de la función llamada.
-Parámetros por referencia: En este tipo de parámetros todo lo que se le haga a los parámetros que entran a la función llamada es modificado si es que se le hizo un cambio.
Por defecto todos los parámetros que entran a una función en C son por valor, como ya sabes las funciones regresan siempre a lo más un valor. Hay veces que se requiere que una función regrese más de un resultado, esto se puede lograr gracias a que en C existe la posibilidad de simular una pasada de parámetros por referencia; la forma de hacerlo es con arrays o punteros, ahí es donde radica la efeciencia del uso de los punteros, según he visto se podría considerar los punteros como la parte de C que lo hace tan poderoso. Eso si, es a veces complicado entender bien el alcance de esto, pero conforme vayas usándolos verás lo eficiente y NECESARIO que resulta usar punteros en C.
Tengo como 1 mes y medio aprendiendo sólo de libros, manuales y foros esto del C y apenas hace poco que empecé a usar punteros empecé a ver que tan necesarios son, al principio parece algo sin mucha gracia, pero conforme vayas avanzando ya te darás cuenta y te acordarás de mi (jejejeje) y de todos los autores de libros de C y profesores (si es que estás llevando clases).
Saludos. Cualquier duda que esté a mi alcance responder aquí estoy.