Предположим, такой фрагмент кода C
//ptr_ops.c -- pointer operations
#include <stdio.h>
int main(void)
{
int arr[] = {100, 200, 300, 400, 500};
int *ptr1, ptr2, ptr3;
ptr1 = arr;
printf("&ptr1 = %p, ptr1 = %p, *ptr1 = %d", &ptr1, ptr1, *ptr1);
return 0;
}
Это производит:
In [11]: !./a.out
&ptr1 = 0x7ffeeefc9790, ptr1 = 0x7ffeeefc97a0, *ptr1 = 100
Я пришел к выводу, что:
ptr1 = 0x7ffeeefc97a0
это arr[]
address, &ptr1
- это место, где хранится указатель или сама переменная.
Что касается python
In [12]: arr = [1, 2, 3]
In [13]: hex(id(arr))
Out[13]: '0x106065088'
'0x106065088' - это адрес значения arr, как насчет ссылки "arr"где хранится?