您的位置:首页 > 编程语言 > C语言/C++

C++ 的引用

2016-03-16 11:59 399 查看


//《变量的引用》

//  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

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

 */
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息