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

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [C] (void*) ¿Para qué sirve?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [C] (void*) ¿Para qué sirve?  (Leído 2,995 veces)
GGZ

Desconectado Desconectado

Mensajes: 144



Ver Perfil
[C] (void*) ¿Para qué sirve?
« en: 18 Noviembre 2015, 15:55 pm »

Hola a todos!, ¿para que sirve usar (void*) ahí?

Código
  1. #include <stdio.h>
  2.  
  3. void imprimir_dir(int x) {
  4.  
  5. printf("La direccion de memoria de a es: %p.\n", (void*) &x);
  6. }
  7.  
  8. int main(void) {
  9. int n;
  10.  
  11. printf("Introduzca un valor entero: ");
  12. scanf("%d", &n);
  13.  
  14. printf("La direccion de memoria de a es: %p.\n", (void*) &n);
  15.  
  16. imprimir_dir(n);
  17. return 0;
  18. }
  19.  

¿Qué pasa si yo hago esto?

Código
  1. /*
  2. Definir una simple función imprimir_dir(int x) cuyo único propósito sea imprimir la dirección del entero
  3. x que se le pasa. Crear una variable entera en main, imprimir su dirección ahí mismo y
  4. luego pasar la variable a imprimir_dir. Comparar los resultados. ¿Es el comportamiento esperado?
  5. */
  6.  
  7. #include <stdio.h>
  8.  
  9. void imprimir_dir(int x){
  10.  
  11. printf ("%p\n",&x);
  12.  
  13. }
  14.  
  15. int main (void){
  16. int a;
  17. a=20;
  18. printf ("%p\n",&a);
  19.  
  20. imprimir_dir(a);
  21.  
  22. return 0;
  23. }


Lo que se me pide es: Definir una simple función imprimir_dir(int x) cuyo único propósito sea imprimir la dirección del entero x que se le pasa. Crear una variable entera en main, imprimir su dirección ahí mismo y luego pasar la variable a imprimir_dir. Comparar los resultados. ¿Es el comportamiento esperado?

Saludos!


« Última modificación: 18 Noviembre 2015, 16:03 pm por nisteeklod » En línea

LET'S DO STUFF!!
DarK_FirefoX


Desconectado Desconectado

Mensajes: 1.263


Be the change you wanna see in te world


Ver Perfil
Re: [C] (void*) ¿Para que sirve?
« Respuesta #1 en: 18 Noviembre 2015, 16:00 pm »

Una función que retorna, devuelve un valor u objeto.

Por ejemplo, la función "atoi(char*)", coge una cadena, y la transforma en un int.

Código
  1. char s[] = "21";
  2. int n = atoi(s);

"atoi" retorna el entero 21.

Las funciones void, simplemente no retornan. Hacen un trabajo, el que sea, y no devuelve nada.

En tu caso, tu función no es necesario que devuelva nada, pues solo va a imprimir una texto en consola. Piensa: ¿De que te sirve devolver un valor si no lo vas a capturar cuando llames a la función?

Salu2s


En línea

GGZ

Desconectado Desconectado

Mensajes: 144



Ver Perfil
Re: [C] (void*) ¿Para qué sirve?
« Respuesta #2 en: 18 Noviembre 2015, 16:01 pm »

Si eso si lo sé, a eso no me refiero, me refiero al (void*) que está adentro printf, no como está definida la función.

¿O entendí mal?
En línea

LET'S DO STUFF!!
geeke

Desconectado Desconectado

Mensajes: 93


Ver Perfil
Re: [C] (void*) ¿Para qué sirve?
« Respuesta #3 en: 18 Noviembre 2015, 19:22 pm »

¿para que sirve usar (void*) ahí?

El especificador de formato %p espera un argumento de tipo void*, por lo tanto es necesario el cast.

¿Qué pasa si yo hago esto?

Al omitir el cast tu aplicacion queda expuesta a comportamiento indefinido.
« Última modificación: 18 Noviembre 2015, 19:31 pm por Coper » En línea

DarK_FirefoX


Desconectado Desconectado

Mensajes: 1.263


Be the change you wanna see in te world


Ver Perfil
Re: [C] (void*) ¿Para qué sirve?
« Respuesta #4 en: 18 Noviembre 2015, 19:28 pm »

Si eso si lo sé, a eso no me refiero, me refiero al (void*) que está adentro printf, no como está definida la función.

¿O entendí mal?

Perdón! No había visto esto ^^

Sigue lo que dice @Coper

Salu2s
En línea

GGZ

Desconectado Desconectado

Mensajes: 144



Ver Perfil
Re: [C] (void*) ¿Para qué sirve?
« Respuesta #5 en: 18 Noviembre 2015, 22:14 pm »

Entendido, muchas gracias.
En línea

LET'S DO STUFF!!
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines