指针变量本身的内存位置

memory location of pointer variable itself?

本文关键字:内存 位置 变量 指针      更新时间:2023-10-16

是否有可能找到指针变量本身的内存位置?

。我不想知道指针引用的内存位置,我想知道指针变量的内存位置。

int A = 5;
int *k = &A;
cout << k;

会给我A.的位置,k有位置吗?

int *k的位置为&k,如下:

// For this example, assume the variables start at 0x00 and are 32 bits each.
int    A   = 9;  // 0x00 = 0x09
int *  k   = &A; // 0x04 = 0x00
int ** k_2 = &k; // 0x08 = 0x04
// Thus:
cout << "Value of A:   " << A;   // "Value of A:   9"
cout << "Address of A: " << k;   // "Address of A: 0x00"
cout << "Address of k: " << k_2; // "Address of k: 0x04"
assert( A == *k);
assert(&A ==  k);
assert(&A ==  *k_2);
assert( A == **k_2);
assert( k == *k_2);
assert(&k ==  k_2);

指针是一个变量,32位在32位二进制文件中,64位在64位二进制文件中,存储一个内存地址。像任何其他变量一样,它有自己的地址,语法是相同的。在大多数情况下,指针的行为类似于大小相同的无符号整型。

现在,当你取&k时,你现在有一个int **,伴随着所有有趣的复杂性。

int ** k_2 = &k, *k_2k, **k_2*k,所以一切都是你所期望的。

这是处理跨库创建对象的一种有用的方法(指针是相当基本的,传递起来也很安全)。双指针通常用于接口中,当你想传递一个将被对象填充的指针,但不暴露对象是如何创建的(例如DirectX)。

是。您可以使用&k打印*k的内存位置。

int A = 5;
int *k = &A;
cout << k;

A的地址为k;K的地址是& K .

你的兄弟,我们在你的地址上放了一个地址,这样你在写地址的时候就可以写了。