[问题] double与sizeof的问题

楼主: FY4   2015-05-01 00:57:55
in VS2010
#include <iostream>
using namespace std;
int main()
{
char a;
int b;
long c;
float d;
double e;
cout <<sizeof(a)<<endl;
cout <<sizeof(b)<<endl;
cout <<sizeof(c)<<endl;
cout <<sizeof(d)<<endl;
cout <<sizeof(e)<<endl;
cout <<sizeof(&a)<<endl;
cout <<sizeof(&b)<<endl;
cout <<sizeof(&c)<<endl;
cout <<sizeof(&d)<<endl;
cout <<sizeof(&e)<<endl;
}
结果输出是
1
4
4
4
8
4
4
4
4
4
想请问的就是这行 cout <<sizeof(&e)<<endl;
double e 所以 sizeof(e) = 8
但是为什么 sizeof(&e) 却是 4
要怎么在4 bytes 里面装上一个 8 bytes的东西?
求解答~ 谢谢各位大大
作者: future314 (未来π)   2015-05-01 01:00:00
&e是位址吧...
作者: Killercat (杀人猫™)   2015-05-01 01:00:00
sizeof(&e)是指标的大小
作者: dritchie (卍~迈斯纳效应~卍)   2015-05-01 01:01:00
&e只是个4byte的指标,指到1个8byte的容器(e)
楼主: FY4   2015-05-01 01:15:00
读的都还回去了... 那想请问 指标有点像是存位置这样房子在大也是一号 房子在小也是一号?memory里面存一堆位置 透过这些位置号码 在去找内容?那这些内容是存在哪里 硬盘吗?
作者: cory8249 (Cory)   2015-05-01 01:25:00
指标只是纪录一个"地址" 地址上的房子可大可小用32位元编译环境 一个指标本身需要占用 4 byte这些指标位址是 memory address
楼主: FY4   2015-05-01 01:31:00
32位元的作业系统 实际上能运作的memory是4GB=2^32 =>4bytes
作者: cory8249 (Cory)   2015-05-01 02:00:00
单一程式寻址 vs 作业系统资源管理 不是同一件事
作者: overhead (overhead)   2015-05-07 22:16:00
地址是那个房子占的第一格的地址,房子的大小以类型来指定,若类型表示房子要大,就是从那个起始地址延伸大点地址是存在memory,你的os会帮你做很多memory mapping,你看到的地址非真实地址

Links booklink

Contact Us: admin [ a t ] ucptt.com