程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 引用之函數返回值 函數的返回值為引用類型《三》

引用之函數返回值 函數的返回值為引用類型《三》

編輯:C++入門知識

一:
可以把函數定義為引用類型,這時函數的返回值即為某一變量的引用(別名),因此,它相當於返回了一個變量,所以可對其返回
值進行賦值操作。這一點類同於函數的返回值為指針類型。 由於函數調用返回的引用類型是在函數運行結束後產生的,所以函數不
能返回自動變量和形參。返回的變量的引用,這個變量必須是全局變量或靜態局部變量,即存儲在靜態區中的變量。
 看個例子:
[cpp] view plaincopy
/*
 * main.cpp
 *
 *  Created on: 2012-9-18
 *      Author: china
 *
 *      注意:由於函數調用返回的引用類型是在函數運行結束後產生的,所以函數不能返回自動變量和形參。
        返回的變量的引用,這個變量必須是全局變量或靜態局部變量,即存儲在靜態區中的變量。
 *
 */ 
#include <iostream> 
using namespace std; 
 
int a = 4; 
//函數返回a的引用,即a的別名!!!! 
 
int &f(int x) { 
    //static int a=4;   和全局變量的效果一樣哦 
    a = a + x; 
    return a; 

 
int main(int argc, char **argv) { 
 
    int t = 5; 
    cout << f(t) << endl;//輸出  9    (a=9)  t=5 
    f(t) = 20;//先調用,再賦值  a=20    t=5 
    cout << f(t) << endl;//輸出25  (a=25)    t=5 
    t = f(t);//先調用,再賦值   a=30,t=30 
    cout << f(t) << endl;//60 
 
    return 0; 

 
(二):我們都知道,函數作為一種程序實體,它有名字、類型、地址和存儲空間,一般說來函數不能作為左值(即函數不能放在
賦值號左邊)。但如果將函數定義為返回引用類型,因為返回的是一個變量的別名,就可以將函數放在左邊,即給這個變量賦值。
eg:
[cpp] 
eg:/*
 * main.cpp
 *
 *  Created on: 2012-9-18
 *      Author: china
 *
 *      我們都知道,函數作為一種程序實體,它有名字、類型、地址和存儲空間,
 *      一般說來函數不能作為左值(即函數不能放在賦值號左邊)。但如果將函數定義為返回引用類型,
 *      因為返回的是一個變量的別名,就可以將函數放在左邊,即給這個變量賦值。
 *
 */ 
 
#include <iostream> 
using namespace std; 
int &f(int &x); 
int main(int argc, char **argv) { 
 
    int a=3; 
    cout<<f(a)<<endl;//a=4,輸出3 
    f(a)=20;//先調用後賦值a=5 
    a+=5;//a=10 
    cout<<f(a)<<endl;//10 
    a=f(a);//a=11,先調用後賦值 
    cout<<f(a)<<endl;//11,a=12 
 
    return 0; 

int &f(int &x) 

  static int t=2; 
  t=x++; 
  return t; 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved