【发布时间】:2019-03-21 02:04:18
【问题描述】:
假设C有这样一个sn-p
//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[] 的地址,&ptr1 是存储指针或变量本身的位置。
关于python
In [12]: arr = [1, 2, 3]
In [13]: hex(id(arr))
Out[13]: '0x106065088'
'0x106065088'是arr的值的地址,引用“arr”呢,它存放在哪里?
【问题讨论】:
-
Python 不会公开您正在寻找的详细程度。
id(arr)的值是一个地址,但它是一个实现细节;id只需要返回一个在作用域内对arr唯一的整数。arr只是一个名称,它指代堆上的一个对象,而不是一个“事物”本身。 -
你是在问 Python 是否支持指针?
-
我想参考应该存储在某个地方而不是在空中飞行@MadPhysicist
-
引用欧比旺克诺比的话:“你不需要看他的身份证明。”。
-
@rider。我已经发布了我认为您的问题的答案。目前还不清楚问题是什么,但您的最后一条评论似乎有问题。