关于不同类型的指针变量大小
在x86(32位)的系统中,不管是什么类型的指针变量,都是只是存储数据元素的首地址,所以大小都一定是4字节。
在x64(64位)的系统中,不管是什么类型的指针变量,都是只是存储数据元素的首地址,所以大小都一定是8字节。
关于指针变量加一的操作
首先:指针 + 1 并不是指针代表的地址值 + 1
指针变量加1,即向后移动1 个位置表示指针变量指向下一个数据元素的首地址。而不是在原地址基础上加1。至于真实的地址加了多少,要看原来指针指向的数据类型是什么。
例1:
char a = 'a';
char *p = &a;
cout<<(void*)p<<" "<<(void*)(p+1)<<endl;
输出:0012FF33 0012FF34
p指向的是一个字符,p+1就是移动一个字符大小