C++ 的引用

来源:互联网 发布:seo关键词优化怎么做 编辑:程序博客网 时间:2024/06/06 02:03


//《变量的引用》

//  main.cpp

//  Three_C++

//

//  Created by 周双建 on 16/3/16.

//  Copyright © 2016周双建. All rights reserved.

/*

 第一:

     介绍:建立引用的作用是:就是在给一个变量另起一个名字。以便在需要的时候可以方便、间接地应用该变量。

 第二:

     引用的基本形似:

     int  a ;

     int &b = a;// 声明b是一个整型变量的引用变量,它被初始化为a

 第三:

     强调:对一个变量的引用的所有操作,实际上都是对其所代表(原来的)变量的操作。

 第四:

     重点:对变量声明一个引用,并不开辟内存单元。在声明一个引用时,必须同时使之初始化,即声明它代表哪一个变量。

 */

// 引用的简单使用


#include <iostream>

using namespace std;

int main(int argc,const char * argv[]) {

    int a = 10;

    // a 一个引用

    int &b = a ;

    // 我们对a 进行操作

    a = 250 * a;

    // 我们开始,现在对 a b 的值进行查看。这里你自己可以猜一下,它们的值。

    cout<<"first_a = "<<a <<","<<"first_b = "<<b<<endl ;

    

    // 我们接着对 b 做点事

    b = b /5 ;

    // 我们在查看一下 a b的值。

    cout<<"second_a = "<<a <<","<<"second_b = "<<b<<endl;

    

    //让我们查看一下,它们的地址

    cout<<"Adderss_a = "<< &a <<endl<<"Address_b = "<< &b <<endl;

    int main_1();

    main_1();

    int main_2();

    main_2();

    int main_3();

    main_3();

    return 0;

}

/*

 输出的结果:

 first_a = 2500,first_b = 2500

 second_a = 500,second_b = 500

 Adderss_a = 0x7fff5fbff75c

 Address_b = 0x7fff5fbff75c

 Program ended with exit code: 0

 */


// 引用的说明

/*

 第一:

    引用不是一种独立的数据类型,必须与某种类型相联系。

    int &b = a ; //正确

    int &b ; // 错误

    float a ; int &b = a ;// 错误

 第二:

    引用与其代表的变量共享同一内存单元,系统不会另外为引用开辟空间。

    上面程序,a b 的地址,相同:如下

    Adderss_a = 0x7fff5fbff75c

    Address_b = 0x7fff5fbff75c

 第三:

    怎么区分是引用还是取地址呢?

    &a的前面有类型时,它必定是引用。

    如果前面没有类型,此时就是取地址。

 第四:

    对引用的初始化,可以用一个变量名,也可以用另一个引用。

    int a = 3 ;

    int &b = a ;

    int &c = b ;

 第五:

    引用在初始化后不能在被从新声明为另一个变量的别名。

    int a = 3 , b = 4;

    int &c = a ;

    c = &b ; // 错误

    int &c = b ;// 错误

 */

/**************************************/

#include <iostream>

using namespace std;


void zsj_Swap (int a ,int b){

    int temp ;

    temp = a ;

    a = b;

    b = temp;

}


int main_1(){

    int j = 2 , s =23 ;

    zsj_Swap(j, s);

    // 我们可以猜测一下,j s的值

    cout<< "j = "<< j <<endl<<"s = "<<s <<endl;

    return 0 ;

}

/*

  输入结果:

  j = 2

  s = 23

  Program ended with exit code: 0

  从结果上,我们看到没有成功。为什么呢?

  // 变量的作用域,有关。

 */

// 下面,我们要使用,指针,来进行运算


#include<iostream>

using namespace std;


void Swap ( int * a ,int * b){

    int temp ;

    temp = *a ;

    *a = *b ;

    *b = temp;

}

int main_2 (){

    int j = 2 , s =5 ;

    Swap(&j, &s);

    // 我们在看看 j s的值

    cout<< "*p_j = " << j <<endl << "*p_s = "<< s <<endl;

    return 0;

}

/*

 输出的结果:

 *p_j = 5

 *p_s = 2

 Program ended with exit code: 0

 // 我们从输出结果上看到,我们交换成功。这种方法是值传递方式,向一个指针变量传送一个地址。然后再通过指针变量访问变量。

 */


// 下面,我们在使用引用

#include <iostream>

using namespace std;

void K_Swap (int &a ,int &b){// 你看到这里,你有没有什么想法???

    int temp;

    temp = a;

    a =  b;

    b = temp;

}


int main_3(){

    int j = 3 ,s =2;

    K_Swap(j, s);

    // 我猜一下,结果

    cout<<"K_j = "<<j <<endl<<"K_s = "<<s <<endl;

    return 0;

}


/*

 输出结果:

 K_j = 2

 K_s = 3

 Program ended with exit code: 0

  我们看到也是成功的。这叫传递变量的别名。

 */


0 0
原创粉丝点击