Autor Tema: Duda de sintaxis con declaración variable dentro en un puntero  (Leído 1561 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado giff

  • PIC10
  • *
  • Mensajes: 31
    • Ignogantes
Duda de sintaxis con declaración variable dentro en un puntero
« en: 15 de Febrero de 2010, 14:04:05 »
Hola amigos de todopic. Tengo una duda con este código con punteros y funciona pero hay una parte que es en la que todavia no caigo y quiero comprenderlo porque me puede -servir para adaptar otro cógigo. Extraido de una libreria para grabar en eeprom interna de un pic.


Código: [Seleccionar]
void write_int16_eeprom(INT_EEPROM_ADDRESS address, int16 data)
{
   int8 i;

   for(i = 0; i < 2; ++i)
   {
     write_eeprom(address + i, *((int8 *)(&data) + i));
   }
}

Principalmente la sección que no entiendo es la que está dentro del parentesis que engloba a la dirección del puntero:

Código: [Seleccionar]
(int8 *)(&data) + i)
¿como debiera interpretar esto?...quiero conocer mas a fondo a mi amigo uC llevado desde programacion C  :).

Segun entendi del genial tutorial de PalitroqueZ y en contexto a write_eeprom el segundo parametro hace referencia al contenido apuntado en data (tiene una direccion dada) y que se va incrementando para ser guardado.

He buscado en el foro y lo mas cercano es este link. Ojala alguien me ayude ya que es mas para aprender la teoría

si por ejemplo
Código: [Seleccionar]
y=((int8 *)(&data) + i) y entre parentesis esta siendo declarado como puntero
Código: [Seleccionar]
*(y). También se que data fue declarado antes (en el inicio de la función) como un int16 y el registro donde se almacenará la dirección data esta declarado implicitamente por el (int8 *) dentro del parentesis. Entonces sacando cuentas (si esta malo no importa, vendria a ser carril mío jaja pero deseo me corrijan) sería lo mismo decir?:

Código: [Seleccionar]
int16 data;
int8 *y;
int8 i;

   for(i = 0; i < 2; ++i)
   {
     y=(&data)+i;
     write_eeprom(address + i, *y);
   }

Uso CCS 4.104
 
Mi blog sobre apuntes de electrónica: www.ignogantes.net

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Duda de sintaxis con declaración variable dentro en un puntero
« Respuesta #1 en: 15 de Febrero de 2010, 14:30:28 »
Sí, es lo mismo. Esto funcionaria igual:

Código: C
  1. int8 *y;
  2.  
  3.    y=&data;
  4.      write_eeprom(address++, *y++);
  5.      write_eeprom(address, *y);


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado giff

  • PIC10
  • *
  • Mensajes: 31
    • Ignogantes
Re: Duda de sintaxis con declaración variable dentro en un puntero
« Respuesta #2 en: 15 de Febrero de 2010, 14:40:34 »
Muchas gracias Suky por responder. Me siento aliviado por la pronta respusta ;D
Mi blog sobre apuntes de electrónica: www.ignogantes.net


 

anything