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

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Punteros en C
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Punteros en C  (Leído 3,170 veces)
;c1v!c

Desconectado Desconectado

Mensajes: 151


Forma parte de esta comunidad gamer!!!


Ver Perfil WWW
Punteros en C
« en: 19 Septiembre 2011, 15:06 pm »

Estoy compilando esto por consola y me tira el siguiente error alguien sabe por que?

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int main()
  4. {
  5.    int mientero;
  6.    mientero=5;
  7.  
  8.    printf("%d",&mientero);
  9.    return 0;
  10. }

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 ‘i
nt *’

EI: juntando mensajes.

compilo en el dev-c++ en windows y anda perfecto!


« Última modificación: 19 Septiembre 2011, 16:20 pm por Eternal Idol » En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Punteros en C
« Respuesta #1 en: 19 Septiembre 2011, 15:17 pm »

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 *":
Código
  1. printf("%p\n", (void *) &mientero);

Un saludo


En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
;c1v!c

Desconectado Desconectado

Mensajes: 151


Forma parte de esta comunidad gamer!!!


Ver Perfil WWW
Re: Punteros en C
« Respuesta #2 en: 19 Septiembre 2011, 15:30 pm »

ahh gracias, no entendi esta parte "y convertir explícitamente el puntero al tipo "void *"
que pasa si no le pongo (void *)

saludos!
En línea

LearningSpanishProgrammer

Desconectado Desconectado

Mensajes: 67


Ver Perfil
Re: Punteros en C
« Respuesta #3 en: 20 Septiembre 2011, 04:33 am »

c1v!c, tu no estas hacendo la pregunta correcta, en mi opinión, sería:

Código:
Por qué es importante la diferencia entre %d y %p?

Ahora, piensa lo que pasa caso el equipo es de 64 bits?
« Última modificación: 20 Septiembre 2011, 04:35 am por LearningSpanishProgrammer » En línea

Estoy aprendiendo español, y tu estas aprendiendo programación
;c1v!c

Desconectado Desconectado

Mensajes: 151


Forma parte de esta comunidad gamer!!!


Ver Perfil WWW
Re: Punteros en C
« Respuesta #4 en: 20 Septiembre 2011, 05:10 am »

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:

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int main()
  4. {
  5.    int mientero,n1,n2=10;
  6.    mientero=5;
  7.    n1=10;
  8.    printf("\t%p\n\t%p\n\t%p\n",&mientero,&n1,&n2);
  9.    return 0;
  10. }
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
punteros
Programación Visual Basic
bautistasbr 4 2,050 Último mensaje 30 Septiembre 2005, 19:35 pm
por NYlOn
Punteros
Programación C/C++
Marsi 2 2,565 Último mensaje 29 Mayo 2020, 08:30 am
por K-YreX
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines