Ver Mensaje Individual
  #6 (permalink)  
Antiguo 29/11/2013, 02:29
Fw190
 
Fecha de Ingreso: junio-2010
Ubicación: Madrid
Mensajes: 620
Antigüedad: 14 años, 7 meses
Puntos: 73
Respuesta: Paso variable en funciones de unsigned

static u16 *mapMemory

Con esto has declarado mapMemory como un puntero a tipo u16.

Para poder usar esa variable en una función, depende de lo que quieras hacer. Si lo que quieres es que la función, tras el proceso que sea, le asigne un valor, hay dos opciones:

- Que la función te devuelva un puntero a u16. Por ejemplo:

Código C:
Ver original
  1. u16 *MiFuncion (lista_de_parametros);   // Prototipo
  2.  
  3. u16 *MiFuncion (lista_de_parametros)    // Implementacion
  4. {
  5.     u16 *ptr;
  6.     // Aqui vendría el código...
  7.     return ptr;
  8.     // Conviene devolver NULL si el cálculo del puntero ha fallado
  9. }
  10.  
  11. mapMemory = MiFuncion (lista_de_parametros);    // Utilizacion
  12. // OJO: Comprobar que el puntero retornado no es NULL

- Modificar el valor dentro de la función. Tendrías que pasar el puntero por referencia, es decir, con un puntero a puntero:

Código C:
Ver original
  1. void MiFuncion (u16 **ptr);     // Prototipo
  2.  
  3. void MiFuncion (u16 **ptr)      // Implementación
  4. {
  5.     // Aqui vendría el código...
  6.     *ptr = valor_calculado
  7. }
  8.  
  9. MiFuncion (&mapMemory);     // Utilización

Si lo que quieres es que la función trabaje con el valor al que apunta mapMemory, simplemente:

Código C:
Ver original
  1. void MiFuncion (u16 *ptr);      // Prototipo
  2.  
  3. void MiFuncion (u16 *ptr)       // Implementacion
  4. {
  5.     // Aqui vendría el código...
  6.     *ptr = resultado_del_proceso;
  7. }
  8.  
  9. MiFuncion (mapMemory);      // Utilizacion

En este último caso, tienes que asegurarte de que mapMemory tiene previamente un valor legal, de lo contrario te encontrarás con una violación de segmento.

Saludos,