Нет переменной с именем t
, так как вы не можете ее изменить. Имя t
просто ссылается на адрес первого элемента (а также имеет связанный с ним размер). Таким образом, взятие адреса по адресу на самом деле не имеет смысла, и C «свернул» его, превратившись в адрес.
То же самое происходит с функциями:
int foo(void)
{
return 12;
}
printf("%p and %p\n", (void *) foo, (void *) &foo);
Это должно напечатать то же самое, поскольку нет переменной, содержащей адрес foo
, чей адрес в свою очередь можно взять.