看板 C_and_CPP 關於我們 聯絡資訊
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
future314: &e是位址吧... 05/01 01:00
Killercat: sizeof(&e)是指標的大小 05/01 01:00
dritchie: &e只是個4byte的指標,指到1個8byte的容器(e) 05/01 01:01
FY4: 讀的都還回去了... 那想請問 指標有點像是存位置這樣 05/01 01:15
FY4: 房子在大也是一號 房子在小也是一號? 05/01 01:16
FY4: memory裡面存一堆位置 透過這些位置號碼 在去找內容? 05/01 01:17
FY4: 那這些內容是存在哪裡 硬碟嗎? 05/01 01:17
cory8249: 指標只是紀錄一個"地址" 地址上的房子可大可小 05/01 01:25
cory8249: 用32位元編譯環境 一個指標本身需要占用 4 byte 05/01 01:26
cory8249: 這些指標位址是 memory address 05/01 01:28
FY4: 32位元的作業系統 實際上能運作的memory是4GB=2^32 =>4bytes 05/01 01:31
cory8249: 單一程式定址 vs 作業系統資源管理 不是同一件事 05/01 02:00
overhead: 地址是那個房子佔的第一格的地址,房子的大小以類型來 05/07 22:16
overhead: 指定,若類型表示房子要大,就是從那個起始地址延伸大點 05/07 22:16
overhead: 地址是存在memory,你的os會幫你做很多memory mapping, 05/07 22:18
overhead: 你看到的地址非真實地址 05/07 22:18