我正在和一个刚接触低级语言,今天是手工内存管理的人谈话,我尽力解释指针。
然后他想到:
#include <stdio.h>
int main()
{
int v = 0;
void* vp = &v;
int i = 0;
for(; i < 10; ++i)
{
printf("vp: %p, &vp: %p\n", vp, &vp);
vp = &vp;
}
}
其结果是:
vp: 0xbfd29bf8, &vp: 0xbfd29bf4
vp: 0xbfd29bf4, &vp: 0xbfd29bf4
vp: 0xbfd29bf4, &vp: 0xbfd29bf4
vp: 0xbfd29bf4, &vp: 0xbfd29bf4
vp: 0xbfd29bf4, &vp: 0xbfd29bf4
vp: 0xbfd29bf4, &vp: 0xbfd29bf4
vp: 0xbfd29bf4, &vp: 0xbfd29bf4
vp: 0xbfd29bf4, &vp: 0xbfd29bf4
vp: 0xbfd29bf4, &vp: 0xbfd29bf4
vp: 0xbfd29bf4, &vp: 0xbfd29bf4
作为副总裁,这对他来说毫无意义!=和VP。我羞于说我不知道这里发生了什么…那么,这是怎么回事?
最佳答案
当你有这行代码时
vp = &vp;
这并不奇怪,
vp == &vp
。在第一次迭代中,这是您(和他)所期望的。