[問題] double與sizeof的問題

看板C_and_CPP (C/C++)作者時間11年前 (2015/05/01 00:57), 編輯推噓2(2014)
留言16則, 6人參與, 最新討論串1/1
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的東西? 求解答~ 謝謝各位大大 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.195.186.137 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1430413078.A.CB4.html

05/01 01:00, , 1F
&e是位址吧...
05/01 01:00, 1F

05/01 01:00, , 2F
sizeof(&e)是指標的大小
05/01 01:00, 2F

05/01 01:01, , 3F
&e只是個4byte的指標,指到1個8byte的容器(e)
05/01 01:01, 3F

05/01 01:15, , 4F
讀的都還回去了... 那想請問 指標有點像是存位置這樣
05/01 01:15, 4F

05/01 01:16, , 5F
房子在大也是一號 房子在小也是一號?
05/01 01:16, 5F

05/01 01:17, , 6F
memory裡面存一堆位置 透過這些位置號碼 在去找內容?
05/01 01:17, 6F

05/01 01:17, , 7F
那這些內容是存在哪裡 硬碟嗎?
05/01 01:17, 7F

05/01 01:25, , 8F
指標只是紀錄一個"地址" 地址上的房子可大可小
05/01 01:25, 8F

05/01 01:26, , 9F
用32位元編譯環境 一個指標本身需要占用 4 byte
05/01 01:26, 9F

05/01 01:28, , 10F
這些指標位址是 memory address
05/01 01:28, 10F

05/01 01:31, , 11F
32位元的作業系統 實際上能運作的memory是4GB=2^32 =>4bytes
05/01 01:31, 11F

05/01 02:00, , 12F
單一程式定址 vs 作業系統資源管理 不是同一件事
05/01 02:00, 12F

05/07 22:16, , 13F
地址是那個房子佔的第一格的地址,房子的大小以類型來
05/07 22:16, 13F

05/07 22:16, , 14F
指定,若類型表示房子要大,就是從那個起始地址延伸大點
05/07 22:16, 14F

05/07 22:18, , 15F
地址是存在memory,你的os會幫你做很多memory mapping,
05/07 22:18, 15F

05/07 22:18, , 16F
你看到的地址非真實地址
05/07 22:18, 16F
文章代碼(AID): #1LGbyMoq (C_and_CPP)
文章代碼(AID): #1LGbyMoq (C_and_CPP)