Как память выделяется переменным разных типов данных?
Я написал следующий код.
#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);
}
Выход0028FF14 0028FF10
.
Я хочу подчеркнуть, что разница между адресами составляет `4 '.
Тогда как в этом случае
#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);
}
Выход0028FF17 0028FF16
Разница в том,1
.
Разница в первом случае4
, Тогда как во втором случае это1
, Почему это так?
И что я получу, если напечатаю значение по всем адресам памяти индивидуально?
Может быть, оно действительно общее и известное, но я только что запустил C, поэтому вывод программы меня смущает.
Обновить
Сейчас использую%p
отформатировать и преобразовать значение указателя вvoid*
напечатать значение указателя, как предложено Китом Томпсоном.