elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Security Series.XSS. [Cross Site Scripting]


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Problema con la notación de punteros
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema con la notación de punteros  (Leído 3,023 veces)
apoeti

Desconectado Desconectado

Mensajes: 81



Ver Perfil
Problema con la notación de punteros
« 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
  1. #include <stdio.h>
  2.  
  3. void main(void)
  4. {
  5. char *p;
  6.  
  7. p = (char*)3500; /* La duda me surge con este (char *) */
  8. while (p< (char*)5500)
  9. {
  10. printf("%c", *p);
  11. p++
  12. }
  13. }

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
  1. *p = 3500;

Un saludo y gracias de antemano.


« Última modificación: 10 Julio 2014, 17:12 pm por HastatusXXI » En línea

eferion


Desconectado Desconectado

Mensajes: 1.248


Ver Perfil
Re: Problema con la notación de punteros
« Respuesta #1 en: 10 Julio 2014, 17:24 pm »

Código
  1. p = (char*)3500;

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.


En línea

apoeti

Desconectado Desconectado

Mensajes: 81



Ver Perfil
Re: Problema con la notación de punteros
« Respuesta #2 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?
« Última modificación: 10 Julio 2014, 17:30 pm por HastatusXXI » En línea

MinusFour
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.529


I'm fourth.


Ver Perfil WWW
Re: Problema con la notación de punteros
« Respuesta #3 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.
« Última modificación: 10 Julio 2014, 17:53 pm por MinusFour » En línea

eferion


Desconectado Desconectado

Mensajes: 1.248


Ver Perfil
Re: Problema con la notación de punteros
« Respuesta #4 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*
En línea

apoeti

Desconectado Desconectado

Mensajes: 81



Ver Perfil
Re: Problema con la notación de punteros
« Respuesta #5 en: 11 Julio 2014, 00:32 am »

Ah, vale, entendido.

Gracias a los dos :)
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Notacion Polaca Inversa
Ejercicios
gabymar 2 13,609 Último mensaje 9 Mayo 2023, 11:20 am
por mcpelos
Notación Polaca Inversa
Programación C/C++
Rudy21 0 6,351 Último mensaje 15 Septiembre 2010, 07:37 am
por Rudy21
Notacion polaca « 1 2 »
Java
xAgramonx 14 33,507 Último mensaje 21 Octubre 2012, 09:09 am
por Rocio Sol
notación polaca inversa
Programación C/C++
david_BS 0 4,592 Último mensaje 31 Marzo 2012, 19:26 pm
por david_BS
notacion JSON error
PHP
geshiro 1 3,002 Último mensaje 18 Mayo 2016, 10:10 am
por moikano→@
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines