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

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

為什么C / C ++中的函數(shù)指針和數(shù)據(jù)指針不兼容?

為什么C / C ++中的函數(shù)指針和數(shù)據(jù)指針不兼容?

C++ C
拉丁的傳說 2019-09-21 14:12:58
我已經(jīng)讀過,在大多數(shù)平臺上都可以將函數(shù)指針轉(zhuǎn)換為數(shù)據(jù)指針,反之亦然,但不能保證能正常工作。為什么會這樣呢?難道兩個都不都是簡單地尋址到主存儲器并因此兼容嗎?
查看完整描述

3 回答

?
智慧大石

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

架構(gòu)不必將代碼和數(shù)據(jù)存儲在同一內(nèi)存中。使用哈佛架構(gòu),代碼和數(shù)據(jù)存儲在完全不同的內(nèi)存中。大多數(shù)體系結(jié)構(gòu)都是馮·諾依曼體系結(jié)構(gòu),其中代碼和數(shù)據(jù)位于同一內(nèi)存中,但是C絕不將自身限制為僅某些類型的體系結(jié)構(gòu)。


查看完整回答
反對 回復 2019-09-21
?
冉冉說

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

對于那些記得MS-DOS,Windows 3.1和更早版本的人,答案很簡單。所有這些用于支持幾種不同的內(nèi)存模型,并具有代碼和數(shù)據(jù)指針的特征的不同組合。


因此,例如對于緊湊模型(小代碼,大數(shù)據(jù)):


sizeof(void *) > sizeof(void(*)())

相反,在中型模型中(大代碼,小數(shù)據(jù)):


sizeof(void *) < sizeof(void(*)())

在這種情況下,您沒有代碼和日期的單獨存儲,但是仍然無法在兩個指針之間進行轉(zhuǎn)換(缺少使用非標準的__near和__far修飾符)。


另外,不能保證即使指針大小相同,它們也指向同一事物-在DOS小型內(nèi)存模型中,代碼和數(shù)據(jù)都在指針附近使用,但它們指向的是不同的段。因此,將函數(shù)指針轉(zhuǎn)換為數(shù)據(jù)指針根本不會給您一個與該函數(shù)有任何關(guān)系的指針,因此這種轉(zhuǎn)換毫無用處。


查看完整回答
反對 回復 2019-09-21
  • 3 回答
  • 0 關(guān)注
  • 755 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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