求教大牛关于C++指针的有关问题
求教大牛关于C++指针的问题#include stdafx.h#include iostreamusing namespace stdint main(int arg
求教大牛关于C++指针的问题
#include "stdafx.h"
#include <iostream>
using namespace std;
int main(int argc, char* argv[])
{
int a,b;
int *p1,*p2;
a=100;b=10;
p1=&a;
p2=&b;
cout<<a<<" "<<b<<endl;
cout<<*p1<<" "<<*p2<<endl;
cout<<p1<<" "<<p2<<endl;
cout<<&a<<" "<<&b<<endl;
cout<<sizeof(int)<<endl;
cout<<sizeof(*p1)<<endl;
printf("Hello World!\n");
return 0;
}
以上代码的输出为:
100 10
100 10
0012FF44 0012FF40
0012FF44 0012FF40
4
4
Hello World!
Press any key to continue
现在我有一个问题,就是指针变量存的是变量的地址,而指针占4个字节,也就是可以取到最大值为65535,但是我输出指针p1和p2中所存的地址是16进制的,转换成10进制分别是1244996和1244992,这完全超出了4个字节所能存储的范围啊。求大牛指点这到底是怎么回事?难道指针不是占4个字节???
[解决办法]4 字节可以表示的最大值为 4294967296。另外指针也不一定占用 4 字节,64 位机器上一般占用 8 字节。