第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

c語言int *pInt=(int *)&d; 什么意思?

c語言int *pInt=(int *)&d; 什么意思?

C#
12345678_0001 2019-01-30 19:07:28
c語言int *pInt=(int *)&d; 什么意思?
查看完整描述

2 回答

?
精慕HU

TA貢獻1845條經(jīng)驗 獲得超8個贊

浮點數(shù)如何存放的已經(jīng)有人回答了,我就不再多談。我猜你要問的是,為什么要取地址,又轉(zhuǎn)什么int *類型的指針,再按int去讀這個數(shù)。

首先,什么是指針?

程序設(shè)計的老師給你講的可能是,這個變量的存放位置。那么這個說法有錯嗎?沒有。那么怎么去理解呢?

計算機的程序在運行時都會被操作系統(tǒng)放入內(nèi)存中,無論是程序代碼、程序使用的變量和常量等等,都是在內(nèi)存中的堆棧中。那么內(nèi)存是什么?內(nèi)存是一個按順序編號的存儲單元序列。比方說,如果我要將一個整形數(shù)(integer)存在內(nèi)存中,那么它要占據(jù)4個存儲單元(每個單元大小為一個字節(jié),即8個比特位),所以我們說int長度是4。同樣的,其他類型的數(shù)據(jù)也有對應(yīng)的長度,比如說double類型數(shù)據(jù)長度為8。

那么內(nèi)存中不可能只放一個數(shù)據(jù)呀,放置多個數(shù)據(jù)之后,我怎么找到想要的變量位置呢?

很容易想到的方法是,我記一下變量起始位置就可以了。比如說我記錄一個雙精度浮點數(shù)(double)類型數(shù)據(jù),我只需要記錄他起始位置(假設(shè)是12),那我從12開始往后讀8個字節(jié)的內(nèi)存單元,我就可以讀出我想要的變量值了。那么,這個12是什么呢?這個12是變量位置,我們給他一個更優(yōu)雅的名稱:指針。

接下來,指針本身只是一個地址,也就是只是一個數(shù)。既然是數(shù),那么也必須是存放在內(nèi)存中的——計算機不能存在寄存器里面啊。所以說指針也是一個變量,在默認(rèn)情況下,它和其他變量也沒有什么本質(zhì)的不同。計算機只知道這里存了個數(shù),它不會管是表示一個地址,或是人類所需要的存放位置。

那么既然是存放位置,我們?yōu)槭裁催€要去定義不同的指針類型呢?比方說我告訴你內(nèi)存位置為12的地方存一個變量,那么怎么去讀取這個變量的值呢?我是按4個字節(jié)還是8個字節(jié)去讀呢?所以要顯示地說明變量類型是什么(int還是double),所以這個指針的值為12,但是類型是int*還是double*還是要手動指定。

但是不管是哪種類型的指針(哪怕是結(jié)構(gòu)體類型的指針),它們長度都是一樣的(int *的長度和double *長度一樣)。所以我們可以強行把一個double*類型按照int*類型來讀。舉例說,我在內(nèi)存空間12-19存放了一個double類型的數(shù),但是我從12開始只讀4個字節(jié),把它理解為一個int,當(dāng)然也是可以的。(這就是題目中這個語句的含義)

所以結(jié)果為什么是0呢,我們只讀了12-15這4個字節(jié)的存儲內(nèi)容,它和原來的長度為8的數(shù)也沒有什么關(guān)系了(畢竟int和double存放方式不一樣)。所以我們要先把double怎么存放在12-19搞明白,找到其中12-15存放的內(nèi)容,然后再把這4個數(shù)“斷章取義”地拼在一起當(dāng)成一個整形數(shù)。(在這里,結(jié)果就是0了)


查看完整回答
反對 回復(fù) 2019-03-10
?
慕萊塢森

TA貢獻1810條經(jīng)驗 獲得超4個贊

把double變量d的地址強制轉(zhuǎn)換為int 指針賦給int *型指針plnt。

至于輸出的是0,這是因為,double是64位二進制值,當(dāng)用%d格式去輸出時,它

只取前面的32位二進制,按int格式去解讀它。如果這個double數(shù)據(jù)的前32個二進制位恰好全是0,這時的輸出就變成0了。


查看完整回答
反對 回復(fù) 2019-03-10
  • 2 回答
  • 0 關(guān)注
  • 1411 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號