我正在和一个刚接触低级语言,今天是手工内存管理的人谈话,我尽力解释指针。
然后他想到:

#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
在第一次迭代中,这是您(和他)所期望的。

10-04 20:50