Saltar al contenido

Cómo imprimir una dirección de memoria en C

Nuestros mejores programadores han agotado sus depósitos de café, por su búsqueda día y noche por la solución, hasta que Jimena halló el arreglo en Bitbucket y ahora la compartimos con nosotros.

Solución:

Usar el especificador de formato %p:

printf("variable A is at address: %pn", (void*)&A);

El estándar requiere que el argumento sea del tipo void* por %p especificador Ya que, printf es una función variádica, no hay conversión implícita a void * de T * lo que sucedería implícitamente para cualquier función no variádica en C. Por lo tanto, se requiere la conversión. Para citar la norma:

7.21.6 Funciones de entrada/salida formateadas (borrador C11)

p El argumento será un puntero a void. El valor del puntero se convierte en una secuencia de caracteres de impresión, de una manera definida por la implementación.

Mientras que estás usando %xque espera unsigned int mientras &A es de tipo int *. Puede leer sobre los especificadores de formato para printf en el manual. La falta de coincidencia del especificador de formato en printf conduce a comportamiento indefinido.

Sección de Reseñas y Valoraciones

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *