Título: Problema con la notación de punteros Publicado por: apoeti en 10 Julio 2014, 17:05 pm Hola.
Me ha surgido una pequeña duda repasando el tema de los punteros. La duda sale a partir de este código: Código
Como digo en el código, la duda me surge con el (char *). No entiendo muy bien para qué sirve. Me estuve informando un poco acerca del casting de punteros, pero eso es con punteros genéricos void, y aquí no parece que tenga mucho que ver ¿Esa sentencia sería equivalente a esta otra? Código
Un saludo y gracias de antemano. Título: Re: Problema con la notación de punteros Publicado por: eferion en 10 Julio 2014, 17:24 pm Código
En esa línea estás haciendo que el puntero p apunte a la dirección 3500. El cast lo hace porque a "p" le estás pasando un entero... y dado que "p" es un puntero, fuerza la compatibilidad entre tipos con un cast. El programa básicamente imprime por pantalla el contenido de la memoria de la posición 3500 a la 5500. Título: Re: Problema con la notación de punteros Publicado por: apoeti en 10 Julio 2014, 17:28 pm Y el hecho de que fuerce un cast a char es porque el puntero "p" está declarado como apuntador a char, ¿no? ¿Podría haberse elegido cualquier otro tipo para apuntar? ¿No se podría haber elegido tipo int para evitar el casting?
Título: Re: Problema con la notación de punteros Publicado por: MinusFour en 10 Julio 2014, 17:49 pm No se si el compilador te tire algún error pero basicamente está diciendo que está apuntando a un dato de typo char en la dirección 3500. CUando lo dereferencias estás escribiendo/leyendo en un byte. Me imagino que si te acepta un int* cuando lo dereferencias estás escribiendo/leyendo en 4 bytes, pero no estoy seguro si no te tire error el compilador.
Título: Re: Problema con la notación de punteros Publicado por: eferion en 10 Julio 2014, 20:45 pm Y el hecho de que fuerce un cast a char es porque el puntero "p" está declarado como apuntador a char, ¿no? ¿Podría haberse elegido cualquier otro tipo para apuntar? ¿No se podría haber elegido tipo int para evitar el casting? se hace un cast a char* porque "p" es de tipo char*... si "p" fuese de tipo unsigned long long* entonces el cast hubiese sido a unsigned long long* Título: Re: Problema con la notación de punteros Publicado por: apoeti en 11 Julio 2014, 00:32 am Ah, vale, entendido.
Gracias a los dos :) |