Сегодня из любопытства я попробовал что-то очень странное:
Код:
int num = 2;
int * point = #
printf("%p\n" , &point);
Вопрос:
1) Первое, что я делаю, это добавляю адрес переменной num
к указателю point
, после чего я использую printf()
, чтобы распечатать адреса хранилищ в указателе point
.
2) Позже я просто пытаюсь изменить код (выше кода), чтобы посмотреть, какое поведение он даст, то есть с помощью printf()
распечатать адрес указателя point
вместо распечатывания адреса сохраняет в указателе point
, который является адресом переменной num
.
3) Тем не менее, он напечатает мне адрес, хотя адрес отличается от адреса переменной num
, просто хочу знать, хорошо ли это поведение определено в стандарте C ?? Почему указатель имеет свой собственный адрес? потому что я думал, что его работа заключается в том, чтобы хранить другой адрес переменной.
Спасибо, что потратили время на чтение.