Hola a todos!, ¿para que sirve usar (void*) ahí?
#include <stdio.h>
void imprimir_dir(int x) {
printf("La direccion de memoria de a es: %p.\n", (void*) &x);
}
int main(void) {
int n;
printf("Introduzca un valor entero: ");
scanf("%d", &n);
printf("La direccion de memoria de a es: %p.\n", (void*) &n);
imprimir_dir(n);
return 0;
}
¿Qué pasa si yo hago esto?
/*
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?
*/
#include <stdio.h>
void imprimir_dir(int x){
printf ("%p\n",&x);
}
int main (void){
int a;
a=20;
printf ("%p\n",&a);
imprimir_dir(a);
return 0;
}
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!
Cita de: ivancea96 en 20 Agosto 2015, 15:02 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.
char s[] = "21";
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
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?
Cita de: nisteeklod en 18 Noviembre 2015, 15:55 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.
Cita de: nisteeklod en 18 Noviembre 2015, 15:55 PM
¿Qué pasa si yo hago esto?
Al omitir el cast tu aplicacion queda expuesta a comportamiento indefinido.
Cita de: nisteeklod 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?
Perdón! No había visto esto ^^
Sigue lo que dice
@CoperSalu2s
Entendido, muchas gracias.