经过查阅资料和实验得出结论
因为内存是由字节组成的,每个字节都有一个地址编号。指针变量主要是存放相同数据类型的变量的首地址,这里的地址就是指内存中某个字节的编号,而这个编号的确定是由地址总线决定的,操作系统的位数决定了指针变量所占的字节数。如果是32位操作系统,也就是地址总线是32位,则它的寻址范围就是02^32(04GB),所以每一个字节的编址就会由32个0或者1组成。
例:第1个字节的编址是32个0,最后1个的编址是32个1。一个字节有8位,32位则需要4个字节。
在不同操作系统中指针大小结论
(1)在32位操作系统下,指针是占4个字节空间大小,不管是什么数据类型
(2)在64位操作系统下,指针是占8个字节空间大小,不管是什么数据类型
结论证明
32位操作系统
cout <<"sizeof(int *)占用地址空间为:" << sizeof(int*) << endl;
cout << "sizeof(double *)占用地址空间为:" << sizeof(double *) << endl;
cout << "sizeof(float *)占用地址空间为:" << sizeof(float *) << endl;
cout << "sizeof(char *)占用地址空间为:" << sizeof(char *) << endl;
64位操作系统
cout <<"sizeof(int *)占用地址空间为:" << sizeof(int*) << endl;
cout << "sizeof(double *)占用地址空间为:" << sizeof(double *) << endl;
cout << "sizeof(float *)占用地址空间为:" << sizeof(float *) << endl;
cout << "sizeof(char *)占用地址空间为:" << sizeof(char *) << endl;