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

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

為什么默認情況下沒有使用NULL初始化指針?

為什么默認情況下沒有使用NULL初始化指針?

C++
慕虎7371278 2019-08-12 10:28:14
為什么默認情況下沒有使用NULL初始化指針?有人可以解釋為什么指針沒有初始化NULL?例:  void test(){      char *buf;      if (!buf)         // whatever   }程序不會進入if,因為buf它不是null。我想知道為什么,在什么情況下我們需要一個帶垃圾的變量,特別是指針解決內(nèi)存上的垃圾?
查看完整描述

3 回答

?
臨摹微笑

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

我們都意識到應(yīng)該初始化指針(和其他POD類型)。
那么問題就變成了“誰應(yīng)該初始化它們”。

那么基本上有兩種方法:

  • 編譯器初始化它們。

  • 開發(fā)人員初始化它們。

我們假設(shè)編譯器初始化了未由開發(fā)人員顯式初始化的任何變量。然后我們遇到這樣的情況:初始化變量是非常重要的,開發(fā)人員在聲明點沒有這樣做的原因是他/她需要執(zhí)行一些操作然后分配。

所以現(xiàn)在我們遇到這樣的情況:編譯器已經(jīng)向代碼添加了一條額外的指令,該指令將變量初始化為NULL,然后添加開發(fā)人員代碼以進行正確的初始化?;蛘咴谄渌麠l件下,變量可能永遠不會被使用。很多C ++開發(fā)人員會在這兩個條件下以這個額外指令為代價來尖叫犯規(guī)。

這不僅僅是時間問題。還有空間。在很多環(huán)境中,兩種資源都非常寶貴,開發(fā)人員也不想放棄。

但是:您可以模擬強制初始化的效果。大多數(shù)編譯器會警告您未初始化的變量。所以我總是將警告級別變?yōu)榭赡艿淖罡呒墑e。然后告訴編譯器將所有警告視為錯誤。在這些條件下,大多數(shù)編譯器將為未初始化但使用的變量生成錯誤,從而阻止生成代碼。


查看完整回答
反對 回復(fù) 2019-08-12
?
qq_遁去的一_1

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

引用TC ++ PL中的Bjarne Stroustrup(特別版第22頁):

功能的實現(xiàn)不應(yīng)對不需要它的程序施加大量開銷。


查看完整回答
反對 回復(fù) 2019-08-12
?
30秒到達戰(zhàn)場

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

因為初始化需要時間。在C ++中,你應(yīng)該對任何變量做的第一件事是明確地初始化它:

int * p = & some_int;

要么:

int * p = 0;

要么:

class A {
   public:
     A() : p( 0 ) {}  // initialise via constructor
   private:
     int * p;};


查看完整回答
反對 回復(fù) 2019-08-12
  • 3 回答
  • 0 關(guān)注
  • 852 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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