簡體   English   中英

你能告訴我給定的代碼如何到達那個輸出嗎?

[英]Can you tell me how the code given reachs to that output?

代碼的輸出是 30。但我不確定它是如何實現的。

#include <iostream>      
int &fun() 
{ 
    static int x = 10; 
    return x; 
} 

int main() 
{ 
    fun() = 30; 
    std::cout << fun(); 
    return 0; 
} 

我期望輸出為 10,但顯示為 30。如何?

你的fun給出了一個int位置(因為它返回一個reference )。 該位置是static變量x ,它被初始化(一次,概念上在程序運行之前)為 10。

然后fun() = 30; 正在分配該位置。 所以x被分配給 30。

最后cout << fun()顯示該位置的內容。

如果x是某個自動變量,您的代碼將具有未定義的行為

附注。 一種粗略的思考&一元引用的方式,比如int &r = x; 是它有點“轉換”你的代碼:引入一個幻影指針int *p = &x; (其中p是一些未出現在其他地方的新變量)並將r替換為*p ,因此&r替換為p ,在該r的范圍內隨處可見。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM