指针变量本身的内存位置?

Bil*_*ill 2 c++ pointers

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

即我不想知道指针引用的内存位置,我想知道指针变量的内存位置是什么.

int A = 5;
int *k = &A;
cout << k;
Run Code Online (Sandbox Code Playgroud)

会给我的位置A.确实k有一个位置?

ssu*_*ube 6

的位置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);
Run Code Online (Sandbox Code Playgroud)

指针是一个变量,32位二进制32位,64位64位,存储内存地址.与任何其他变量一样,它具有自己的地址,并且语法相同.对于大多数意图和目的,指针的作用类似于相同大小的无符号整数.

现在,当你拿走时&k,你现在拥有了一个int **带有所有有趣的复杂性的东西.

int ** k_2 = &k,*k_2k**k_2*k,那么一切正常关于你如何期望.

这可以是处理跨库创建对象的有用方法(指针是相当基本的,并且通常是安全的通过).双指针通常用于要传递将填充对象的指针的接口,但不公开对象的创建方式(例如,DirectX).