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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

size_t vs. uintptr_t

size_t vs. uintptr_t

C
繁華開(kāi)滿天機(jī) 2019-07-31 17:49:30
size_t vs. uintptr_tC標(biāo)準(zhǔn)保證這size_t是一種可以保存任何數(shù)組索引的類型。這意味著,邏輯上,size_t應(yīng)該能夠保存任何指針類型。我在Googles上發(fā)現(xiàn)的一些網(wǎng)站上看到這是合法的和/或應(yīng)該始終有效:void *v = malloc(10);size_t s = (size_t) v;那么在C99中,標(biāo)準(zhǔn)引入了intptr_t和uintptr_t類型,它們是有符號(hào)和無(wú)符號(hào)類型,保證能夠保存指針:uintptr_t p = (size_t) v;那么使用size_t和有uintptr_t什么區(qū)別??jī)烧叨际菬o(wú)符號(hào)的,并且兩者都應(yīng)該能夠保存任何指針類型,因此它們?cè)诠δ苌峡雌饋?lái)相同。除了清晰度之外,是否有任何真正令人信服的理由uintptr_t(或者更好的是,a void *)而不是a size_t?在一個(gè)不透明的結(jié)構(gòu)中,字段只能由內(nèi)部函數(shù)處理,有沒(méi)有理由不這樣做?出于同樣的原因,ptrdiff_t一直是一個(gè)能夠保持指針差異的簽名類型,因此能夠容納大多數(shù)指針,那么它與它intptr_t有何區(qū)別?是不是所有這些類型基本上都服務(wù)于同一功能的不同版本?如果沒(méi)有,為什么?對(duì)于其中一個(gè)我不能用另一個(gè)做什么我不能做什么?如果是這樣,為什么C99會(huì)在語(yǔ)言中添加兩種基本上多余的類型?我愿意忽略功能指針,因?yàn)樗鼈儾贿m用于當(dāng)前的問(wèn)題,但隨意提及它們,因?yàn)槲矣幸环N潛在的懷疑,它們將成為“正確”答案的核心。
查看完整描述

3 回答

?
ibeautiful

TA貢獻(xiàn)1993條經(jīng)驗(yàn) 獲得超6個(gè)贊

size_t是一種可以保存任何數(shù)組索引的類型。這意味著,邏輯上,size_t應(yīng)該能夠保存任何指針類型

不必要!回到分段16位架構(gòu)的時(shí)代,例如:一個(gè)陣列可能僅限于一個(gè)段(所以16位size_t會(huì)這樣做)但是你可能有多個(gè)段(所以需要一個(gè)32位的intptr_t類型來(lái)挑選細(xì)分及其內(nèi)部的偏移)。我知道這些事情聽(tīng)起來(lái)很奇怪,在這些日子里,統(tǒng)一可尋址的未分段架構(gòu),但標(biāo)準(zhǔn)必須提供比“2009年正常情況”更廣泛的品種,你知道! - )


查看完整回答
反對(duì) 回復(fù) 2019-07-31
?
慕哥6287543

TA貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超10個(gè)贊

關(guān)于你的陳述:

“C標(biāo)準(zhǔn)保證這size_t是一種可以保存任何數(shù)組索引的類型。這意味著,邏輯上,它size_t應(yīng)該能夠保存任何指針類型?!?/p>

這實(shí)際上是一種謬誤(由于錯(cuò)誤的推理造成的誤解)(a)。你可能認(rèn)為后者是從前者開(kāi)始的,但事實(shí)并非如此。

指針和數(shù)組索引不是一回事。設(shè)想一個(gè)將數(shù)組限制為65536個(gè)元素的符合實(shí)現(xiàn)但允許指針將任何值尋址到一個(gè)巨大的128位地址空間中是非常合理的。

C99表示size_t變量的上限由下定義,SIZE_MAX并且可以低至65535(參見(jiàn)C99 TR3,7.18.3,在C11中不變)。如果在現(xiàn)代系統(tǒng)中將指針限制在此范圍內(nèi),則指針將相當(dāng)有限。

在實(shí)踐中,您可能會(huì)發(fā)現(xiàn)您的假設(shè)成立,但這不是因?yàn)闃?biāo)準(zhǔn)保證了它。因?yàn)樗鼘?shí)際上并不能保證它。


(a)順便說(shuō)一下,這不是某種形式的人身攻擊,只是說(shuō)明為什么你的陳述在批判性思維的背景下是錯(cuò)誤的。例如,以下推理也無(wú)效:

所有的小狗都很可愛(ài)。這件事很可愛(ài)。因此,這件事必須是一只小狗。

puppiess的可愛(ài)或其他方面在這里沒(méi)有任何影響,我所說(shuō)的只是兩個(gè)事實(shí)并不能得出結(jié)論,因?yàn)榍皟蓚€(gè)句子允許存在不是小狗的可愛(ài)東西。

這類似于你的第一個(gè)陳述,不一定強(qiáng)制要求第二個(gè)陳述。


查看完整回答
反對(duì) 回復(fù) 2019-07-31
?
小怪獸愛(ài)吃肉

TA貢獻(xiàn)1852條經(jīng)驗(yàn) 獲得超1個(gè)贊

我會(huì)讓所有其他答案代表片段限制,異國(guó)情調(diào)架構(gòu)等的推理。

名稱的簡(jiǎn)單差異是不是足以使用正確的類型來(lái)做正確的事情?

如果您要存儲(chǔ)尺寸,請(qǐng)使用size_t。如果您要存儲(chǔ)指針,請(qǐng)使用intptr_t。閱讀代碼的人會(huì)立即知道“啊哈,這是一個(gè)大小的東西,可能以字節(jié)為單位”,“哦,這里的指針值由于某種原因存儲(chǔ)為整數(shù)”。

否則,您可以使用unsigned long(或者,在這些現(xiàn)代時(shí)代unsigned long long),用于所有事情。大小不是一切,類型名稱帶有有用的含義,因?yàn)樗兄诿枋龀绦颉?/p>


查看完整回答
反對(duì) 回復(fù) 2019-07-31
  • 3 回答
  • 0 關(guān)注
  • 569 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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