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

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

C+返回局部變量的引用

C+返回局部變量的引用

C++ C
弒天下 2019-06-09 16:50:44
C+返回局部變量的引用如果必須返回i,下面的代碼(function 1()正確嗎?我記得在某個(gè)地方讀到當(dāng)返回對局部變量的引用時(shí)會出現(xiàn)問題。它與函數(shù)2()有什么不同?int& func1(){     int i;     i = 1;     return i;}int* func2(){     int* p;     p = new int;     *p = 1;     return p;}
查看完整描述

3 回答

?
臨摹微笑

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

局部變量是堆棧上的內(nèi)存,當(dāng)超出作用域時(shí),內(nèi)存不會自動失效。從更深層次的嵌套函數(shù)(內(nèi)存中堆棧的更高部分)來看,訪問這個(gè)內(nèi)存是完全安全的。

但是,一旦函數(shù)返回并結(jié)束,事情就變得危險(xiǎn)了。通常,當(dāng)您返回時(shí),內(nèi)存不會被刪除或覆蓋,這意味著內(nèi)存仍然包含您的數(shù)據(jù)-指針看起來是有效的。

直到另一個(gè)函數(shù)構(gòu)建堆棧并覆蓋它。這就是為什么這可以工作一段時(shí)間-然后突然停止功能后,一個(gè)特別深嵌套的函數(shù)集,或一個(gè)非常大的或許多本地對象的函數(shù),再次到達(dá)堆棧內(nèi)存。

甚至可能發(fā)生的情況是,您再次到達(dá)同一個(gè)程序部件,并用新函數(shù)變量覆蓋舊的局部函數(shù)變量。所有這一切都是非常危險(xiǎn)的,應(yīng)該非常氣餒。不要使用指向本地對象的指針!


查看完整回答
反對 回復(fù) 2019-06-09
?
江戶川亂折騰

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

值得記住的是這些簡單的規(guī)則,它們同時(shí)適用于參數(shù)和返回類型.。

  • Value-復(fù)制所涉項(xiàng)目。
  • 指針-指有關(guān)項(xiàng)目的地址。
  • 引用-字面上是所討論的項(xiàng)目。

每個(gè)人都有時(shí)間和地點(diǎn),所以一定要了解他們。正如您在這里所展示的,局部變量僅限于它們在函數(shù)作用域中在本地存在的時(shí)間。在您的示例中,返回類型為int*回歸&i同樣也是不正確的。如果那樣的話你做這個(gè)會更好.。

void func1(int& oValue){
    oValue = 1;}

這樣做將直接更改傳入的參數(shù)的值。而這個(gè)密碼.。

void func1(int oValue){
    oValue = 1;}

不會的。它只會改變oValue函數(shù)調(diào)用的本地。之所以這樣做,是因?yàn)槟鷮?shí)際上只需要更改一個(gè)“本地”副本。oValue,而不是oValue本身。


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

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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