是否有可能找到指针变量本身的内存位置?
即我不想知道指针引用的内存位置,我想知道指针变量的内存位置是什么.
int A = 5;
int *k = &A;
cout << k;
Run Code Online (Sandbox Code Playgroud)
会给我的位置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);
Run Code Online (Sandbox Code Playgroud)
指针是一个变量,32位二进制32位,64位64位,存储内存地址.与任何其他变量一样,它具有自己的地址,并且语法相同.对于大多数意图和目的,指针的作用类似于相同大小的无符号整数.
现在,当你拿走时&k,你现在拥有了一个int **带有所有有趣的复杂性的东西.
从int ** k_2 = &k,*k_2是k和**k_2是*k,那么一切正常关于你如何期望.
这可以是处理跨库创建对象的有用方法(指针是相当基本的,并且通常是安全的通过).双指针通常用于要传递将填充对象的指针的接口,但不公开对象的创建方式(例如,DirectX).
| 归档时间: |
|
| 查看次数: |
159 次 |
| 最近记录: |