Я понимаю, что я имею в виду i = адрес вещи, хранящейся в чем-то
На самом деле я содержит адрес, который ДОЛЖЕН быть адресом переменной, содержащей int.Я сказал "должен", потому что вы не можете быть уверены в этом в C:
char x;
int *i;
i = (int *)&x;
, если я - указатель, чем присвоение ему чего-то отличного от действительного адреса, доступного из вашей программы, является ошибкой Iдумаю, может привести к неопределенному поведению:
int *i;
i = 5;
*i; //undefined behavior..probably segfault
вот несколько примеров:
int var;
int *ptr_to_var;
var = 5;
ptr_to_var = var;
printf("var %d ptr_to_var %d\n", var, *ptr_to_var); //both print 5
printf("value of ptr_to_var %p must be equal to pointed variable var %p \n" , ptr_to_var, &var);