如果这是人人皆知的问题那就恕我愚昧了....

曾经在有些C++参考书中看到,指针的值实际上是其指向的对象内存地址的值,当指针值自增1时,其指向的内存地址值也增加1。

而实际上很明显,指针值自增1时,其值并不按照增加1变化,而是增加指向对象类型占用内存空间大小,如int型增加4。


#include <iostream>
using namespace std;

int main()
{
    int a = 1;
    auto *p = &a;
    cout << p << endl;
    cout << ++p << endl;
}

输出:

0047F998
0047F99C

#include <iostream>
using namespace std;

int main()
{
    long int a = 1;
    auto *p = &a;
    cout << p << endl;
    cout << ++p << endl;
}

输出:

00EDF9F8
00EDF9FC