[問題] 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