¿Cómo se asigna la memoria a las variables de diferentes tipos de datos?
Escribí el siguiente código.
#include<stdio.h>
int main()
{
int x = 1 ;
int *j = &x ;
int y = 2 ;
int *t = &y ;
printf("%p\n" , (void *)j);
printf("%p" , (void *)t);
}
La salida es0028FF14 0028FF10
.
El punto que quiero destacar es que la diferencia entre las direcciones es '4'.
Mientras que en este caso
#include<stdio.h>
int main()
{
char x = 't' ;
char *j = &x ;
char y = 'f' ;
char *t = &y ;
printf("%p\n" , (void *)j);
printf("%p" , (void *)t);
}
La salida es0028FF17 0028FF16
La diferencia es1
.
La diferencia en el primer caso es4
. Mientras que en el segundo caso es1
. ¿Por que es esto entonces?
¿Y qué obtendré si imprimo el valor en todas las direcciones de memoria individualmente?
Tal vez es realmente general y conocido, pero acabo de comenzar C, por lo que la salida del programa me confunde.
Actualizar
Ahora usando%p
formatear y convertir el valor del puntero avoid*
para imprimir el valor del puntero como lo sugiere Keith Thompson.