Estoy compilando esto por consola y me tira el siguiente error alguien sabe por que?
#include <stdio.h>
#include <stdlib.h>
int main()
{
int mientero;
mientero=5;
printf("%d",&mientero);
return 0;
}
Consola:
pepe@pepe-netbook:~$ gcc punt1.c -o punt1
punt1.c: In function 'main':
punt1.c:8: warning: format '%d' expects type 'int', but argument 2 has type 'int *'
EI: juntando mensajes.
compilo en el dev-c++ en windows y anda perfecto!
Me parece el mensaje de error es bastante claro: el especificador "%d" espera un (correspondiente) argumento de tipo "int" mientras que tu le pasas "&mientero" que es de tipo "int *".
Si quieres imprimir una dirección de memoria debes utilizar "%p" y convertir explícitamente el puntero al tipo "void *":
printf("%p\n", (void *) &mientero);
Un saludo
ahh gracias, no entendi esta parte "y convertir explícitamente el puntero al tipo "void *"
que pasa si no le pongo (void *)
saludos!
c1v!c, tu no estas hacendo la pregunta correcta, en mi opinión, sería:
Por qué es importante la diferencia entre %d y %p?
Ahora, piensa lo que pasa caso el equipo es de 64 bits?
gracias por las respuestas ya solucione todo gracias!!
aca les dejo el ejercicio facil que teni q hacer pero sirve como ejemplo:
muestra las direcciones de memoria de las variables:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int mientero,n1,n2=10;
mientero=5;
n1=10;
printf("\t%p\n\t%p\n\t%p\n",&mientero,&n1,&n2);
return 0;
}