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

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

為什么地址零用于空指針?

為什么地址零用于空指針?

C++ C
SMILET 2019-08-30 16:11:53
在C(或C ++)中,指針是特殊的,如果它們的值為零:我建議在釋放內存后將指針設置為零,因為這意味著再次釋放指針并不危險; 當我調用malloc時,如果它無法獲取內存,則返回一個值為零的指針; 我一直用if (p != 0)它來確保傳遞的指針是有效的,等等。但是,由于內存尋址從0開始,因此有效地址不是0嗎?如果是這樣的話,0如何用于處理空指針?為什么不是負數(shù)而是null?編輯:一堆好的答案。我將總結在所表達的答案中所說的內容,因為我自己的思想解釋了它,并希望如果我誤解,社區(qū)將糾正我。就像編程中的其他一切一樣,它是一種抽象。只是一個常量,與地址0并不真正相關.C ++ 0x通過添加關鍵字來強調這一點nullptr。它甚至不是地址抽象,它是C標準指定的常量,并且編譯器可以將其轉換為其他數(shù)字,只要它確保它永遠不等于“真實”地址,并且如果0不是,則等于其他空指針用于平臺的最佳價值。如果它不是抽象,早期就是這種情況,系統(tǒng)使用地址0,程序員不受限制。我承認,我的負面數(shù)字建議是一個狂熱的頭腦風暴。對地址使用有符號整數(shù)有點浪費,如果它意味著除了空指針(-1或其他)之外,值空間在產生有效地址的正整數(shù)和剛剛浪費的負數(shù)之間均勻分配。如果任何數(shù)字總是可以由數(shù)據(jù)類型表示,那么它就是0.(也可能是1。我想的是一位整數(shù),如果是無符號則為0或1,或者只有符號的有符號位,或兩位整數(shù),將是[-2,1]。但是你可以只得0為空,1是內存中唯一可訪問的字節(jié)。)
查看完整描述

3 回答

?
侃侃無極

TA貢獻2051條經驗 獲得超10個贊

從歷史上看,從0開始的地址空間始終是ROM,用于某些操作系統(tǒng)或低級中斷處理例程,如今,由于一切都是虛擬的(包括地址空間),操作系統(tǒng)可以將任何分配映射到任何地址,因此它可以特別是不在地址0分配任何東西。


查看完整回答
反對 回復 2019-08-30
?
搖曳的薔薇

TA貢獻1793條經驗 獲得超6個贊

IIRC,“空指針”值不保證為零。編譯器將0轉換為適合于系統(tǒng)的任何“空”值(實際上它可能總是為零,但不一定是)。無論何時將指針與零進行比較,都會應用相同的轉換。因為您只能將指針相互比較并與此特殊值0進行比較,所以它使程序員無法了解有關系統(tǒng)內存表示的任何信息。至于為什么他們選擇0而不是42或者某些,我猜它是因為大多數(shù)程序員從0開始計數(shù):)(另外,在大多數(shù)系統(tǒng)上0是第一個內存地址,他們希望它方便,因為在像我所描述的那樣練習翻譯很少實際發(fā)生;語言只允許它們)。

查看完整回答
反對 回復 2019-08-30
  • 3 回答
  • 0 關注
  • 988 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號