C++中指针值自增1并不是内存地址增加1
如果这是人人皆知的问题那就恕我愚昧了....
曾经在有些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