1. 程式人生 > >C++引用:經典例題之引用作為函式的返回值,結合函式棧幀詳解

C++引用:經典例題之引用作為函式的返回值,結合函式棧幀詳解

程式碼如下:

#include <stdio.h>
#include <windows.h>
#include <iostream>
using namespace std;

int& fun()
{
    int a = 10;
    return a;
}

int main()
{
    int &b = fun();

    printf("%d\n", b);
    printf("%d\n", b);
    printf("%d\n", b);

    system("pause");
    return 0;
}

輸出結果如圖:
這裡寫圖片描述
詳解如圖:(如果看不清楚圖片,請右鍵圖片選擇“在新標籤頁中開啟圖片”,即可檢視清晰大圖)
這裡寫圖片描述

相關推薦

C++引用經典例題引用作為函式返回結合函式

程式碼如下: #include <stdio.h> #include <windows.h> #include <iostream> using namespa

Python小白學習路(十)—【函式】【函式返回】【函式引數】

寫在前面: 昨天早睡之後,感覺今天已經恢復了百分之八十的樣子 又是活力滿滿的小夥郭 今日份雞湯: 我始終相信,在這個世界上,一定有另一個自己,在做著我不敢做的事,在過著我想過的生活。-------宮崎駿 函式 一、函數出現的背景 在學習函式之前,一直遵循:面向過程程式設計,即:根據業務邏輯從上到

C#Process.Start獲取main函式返回以及控制檯輸出重定向到文字框

1、Process.Start()返回啟動程序main函式的返回值   private void button1_Click(object sender, EventArgs e)         {             Process da = new Process

C++ 引用作為函式返回

(1)以引用返回函式值,定義函式時需要在函式名前加 & (2)用引用返回一個函式值的最大好處是,在記憶體中不產生被返回值的副本。 引用作為返回值,必須遵守以下規則: (1)不能返回區域性變數的引用。主要原因是區域性變數會在函式返回後被銷燬,因此被返回的引用就成為了

C 語言程式設計 經典例題一百道 21 猴子吃桃問題猴子第一天摘下若干桃子當即吃了一半。還不過癮又多吃了一個。第二天早上又將剩下的桃子吃掉一半又多吃了一個。

 猴子吃桃問題:猴子第一天摘下若干桃子,當即吃了一半。還不過癮,又多吃了一個。第二天早上又將剩下的桃子吃掉一半,又多吃了一個。此後的每一次都吃前一天所剩桃子的一半,再多吃一個。第十天早上發現,只剩一個桃子。 方法一: 從前往後推導,第一天採了 x 個桃子,x/2 - 1

引用作為函式返回的分析

  例如,下面的程式是有關引用返回的4種形式:     //*********************     //**   ch9_6.cpp  **     //*******************

C/C++】回溯經典演算法-->八皇后問題

一、八皇后問題 八皇后問題,是一個古老而著名的問題,是回溯演算法的典型案例。該問題是國際西洋棋棋手馬克斯·貝瑟爾於1848年提出:在8×8格的國際象棋上擺放八個皇后,使其不能互相攻擊,即任意兩個皇后都不能處於同一行、同一列或同一斜線上,問有多少種擺法。高斯認為有76種方案。

C++基礎知識(八)---函式返回返回返回指標返回物件返回引用)---引用---複製建構函式(拷貝建構函式

一、函式返回值   1.返回值: int test () { int a=1; return a; }   返回值時最簡單的方式,它的操作主要在棧上,變數a在函式結束後會刪除,為了返回a的值,系統會在內部建立一個臨時變數儲存a的值,以返回給呼叫該函式的表示式,呼叫結束後變數便

C++ 建立類的時候對類成員進行賦建立類並且以引用的方式賦引用的方式在建構函式

類的實現方式:  class TestClass { public: //建構函式 TestClass(QString &str_01, QString &str_02

C++中函式返回引用型別與非引用型別的區別

返回值為引用型別的函式某些情況下可作為表示式的左值,而非引用的則一般不可以。 函式返回值若為引用型別,當返回的是函式的引用形參時,則是對函式外的變數的引用,函式可以作為表示式的左值(被賦予新值)。 而當函式返回的是非引用型別時,返回的值是函式內隱式生成的

C# socket 程式設計 accept() 函式返回解析

accept() 函式會返回一個新的套接字,這個新的套接字在伺服器端與客戶端進行通訊。 伺服器端的繫結監聽是一個套接字,與客戶端通訊的是另一個套接字(accept函式返回的套接字,注意這裡不是返回客戶端的套接字,返回的套接字是新建立在伺服器上的,與客戶端收發訊息用的) 下面這段程式碼,是

c++基礎const,變數的作用域和生存期儲存型別

一:const的使用: const常量型別表示“常值變數”,cosnt型變數代表的常值只在其作用域內有效; const與define相比:const會在編譯時進行型別檢查,而define只做文字替換;define後面不需要分號。 1.宣告變數:例如 const int size = 20; 2.限定

C語言求10 個整數中最大

求10 個整數中最大值思路:求10 個整數中最大值,可以利用陣列來完成對10個數的儲存,再用迴圈語句和條件語句來判斷數的大小, 把最大值賦值給最大值變數max,然後輸出最大值。 程式碼如下: #include<stdio.h> int main() { int i,max;

函式返回指標引用與指標區別

1,函式不可以返回棧記憶體的指標,但是可以返回堆記憶體的指標,可以free掉兩次指向空的指標,但是不能連續free兩次指向記憶體的指標,會產生已放棄   int main() { int *a; a = (int *)malloc(10); a[0] = 1

軟體素材---linux C語言linux下獲取可執行檔案的絕對路徑--getcwd函式

      //標頭檔案:#include <unistd.h>     //定義函式:char * getcwd(char * buf, size_t size);    

14. 函式返回引用

函式返回值可以是引用嗎? 當然可以,只是在函式返回引用的時候需要注意幾點。以下給出討論! 函式在返回值的時候,會產生一個臨時變數作為函式返回值的副本;而函式在返回引用的時候,不會產生副本!那麼既然是

java 11陣列作為函式引數陣列做為函式返回

1 陣列作為引數 我們可以將陣列作為引數,傳入到函式中,其實就像我們main函式中 public void main(String [] args){};就是用陣列作為函式引數; 又如, publicclass ArrayPar  {  publicstaticvoid

C語言--區域性變數作為指標返回的問題

程式碼: #include <stdio.h> #include <stdlib.h> int* getStu(int x, int y) {         int* i;         *i = x+y;         return i; }

Java經典設計模式十一種行為型模式(附例項和

Java經典設計模式共有21中,分為三大類:建立型模式(5種)、結構型模式(7種)和行為型模式(11種)。 行為型模式細分為如下11種:策略模式、模板方法模式、觀察者模式、迭代子模式、責任鏈模式、命令模式、備忘錄模式、狀態模式、訪問者模式、中介者模式、直譯

c語言輸入兩個正整數m和n求其最大公約數和最小公倍數

輸入兩個正整數m和n,求其最大公約數和最小公倍數。解:程式:#include <stdio.h>int main(){int num1, num2, t,p;printf("請輸入兩個正整數