Ver Mensaje Individual
  #1 (permalink)  
Antiguo 08/03/2011, 21:17
pollin14
 
Fecha de Ingreso: marzo-2010
Ubicación: df
Mensajes: 58
Antigüedad: 14 años, 9 meses
Puntos: 5
Tamaño de datos en memoria con apuntador void

Hola!:)

Tengo que hacer un programa que al pasarle un apuntador void* pueda saber si es entero (int), de punto flotante (double), un caracter (char) o una cadena (char[]).

void miFuncion(void* apuntador);

Lo unico que se me ocurrio fue usar sizeof para saber el tamaño de memoria que ocupa el dato ya que se lo siguiente:

int --> 4 bytes
double--> 8 bytes
char --> 1 byte
char[15]--> 15 bytes

Pero si ejecuto el siguiente codigo no me arroja los resultados que espero.


Código C:
Ver original
  1. int main(){
  2.     int n = 1;
  3.     double d = 999999999999;
  4.     char c = '3';
  5.     char cadena[15] = "cadena";
  6.    
  7.     void* p = &n;
  8.     void* p2 = &d;
  9.     void* p3 = &c;
  10.     void* p4 = &cadena;
  11.    
  12.     printf("n = %d \n", sizeof(*p));
  13.     printf("d = %d \n", sizeof(d)); // si ponemos *p2 regresa 4 ¿porque?
  14.     printf("c = %d \n", sizeof(*p3));
  15.     printf("c = %d \n", sizeof(*p4)); // esto me deberia de regrasar 15 (15 bytes) 
  16. }

Saludos!